[Python-de] subprocess und encoding...

Jens Diemer python_gmane at jensdiemer.de
Mon Jun 19 15:27:06 CEST 2006


Diez B. Roggisch schrieb:
>> sys.stdin.encoding:
>>      None
>> sys.stdout.encoding:
>>      None
> Das liegt daran, das die standard ein/ausgaben NIE ein encoding haben, 
> genausowenig wie pipes zu subprozessen. Und das mit gutem Grund: was wenn du 
> eine pipe zu einem PNG-generator aufbauen willst? Dann brauchst du 
> byte-streams. Das ist der minimale Vertrag, den man mit einem subprozess 
> shcliessen kann.
Das stimmt nicht ganz. Zwar spuckt z.B. sys.stdout.encoding unter 
Windows nur None aus, unter Linux hab ich da aber UTF-8.
Wäre auch irgendwie merkwürdig, das die Objekte überhaupt ein Attribut 
.encoding haben, wenn das keinen Sinn macht...

>> Naja, dann bleib ich einfach beim dummen Probieren...
> Besser ist, den Problemen auf den Grund zu gehen. Wenn du vermurkste Daten in 
> der DB hast, finde raus woher. 

Also in der DB hab ich auf jeden Fall die richtigen Daten. Ich versuche 
generell alles in UTF-8 zu speichern. In PyLucid selber, aber auch in 
phpMyAdmin sehe ich die Umlaute korrekt. Von daher gehe ich mal einfach 
davon aus, das sie auch korrekt in der DB gespeichert werden ;)

Am liebsten wäre mich eigentlich ich könnte den Dump anders als mit dem 
Programm mysqldump erzeugen... Es gibt bei MySQL zwar das Statement:
	
	SHOW CREATE TABLE

Aber ich hab nichts gefunden um die Zeilen-INSERT zu generieren. Wobei 
man das auch einfach selber erzeugen lassen kann... Naja, so wie es 
jetzt ist klappt es erstmal...

Übrigends ist der eigentliche subprocess-Sourcecode noch ein wenig 
komplizierter, weil ich einen Timeout haben möchte. Die Sourcen sind 
hier zu finden:
https://opensvn.csie.org/traccgi/PyLucid/browser/branches/0.7/PyLucid/system/tools.py?rev=423#L478


-- 
Mfg.

Jens Diemer


----
CMS in pure Python CGI: http://www.pylucid.org