snakeseven hat geschrieben:@ Gerold: Kannst du mir noch sagen, wieso in
deinem Beispiel cPickle.dumps (mit's') verwendet wird ? Habe dazu auch bei Google nichts gefunden und in der Python Referenz, wie leider so oft, auch nichts.
Hi Seven!
Da ich davon gehört habe, dass unter Windows das Zielprogramm abgebrochen wird, wenn über sys.stdin des Zielprogramms der String "\x1a" geleitet wird, dachte ich mir, dass es besser sei, keine binären Daten über STDIN zu jagen. Da in der Erklärung von "cPicle.dumps" steht, dass damit ein String erzeugt wird, dachte ich mir, dass "dumps" sich schon darum kümmern wird, dass kein "EOF" (="\x1a") mitten im String auftauchen wird. Aber wahrscheinlich wird "dumps" exakt den gleichen Code erzeugen, wie ihn "dump" erzeugt.
Der einzige Unterschied wird also sein, dass ich vorher einen String erzeuge und diesen mit "write()" über die Leitung jage und in der Version von modelnine wird dieser Schritt ausgelassen, da "dump" sich schon darum kümmert, dass die Daten in das "File"-Objekt (in diesem Fall: STDIN des Kindprozesses) geschrieben wird.
http://python.org/doc/2.4.2/lib/node65.html
Das "BIN"-Problem besteht aber trotzdem noch, da ich ja beim "dumps" als Protokoll die Zahl 2 angegeben habe. Das war evt. nicht so gut. Hätte ich das nicht angegeben, dann würde mit Sicherheit ein "ASCII"-String generiert werden. Andererseits glaube ich nicht, dass mit "Pickle" etwas generiert wird, was den Datenfluss abbrechen könnte.
http://www.python-forum.de/viewtopic.php?p=29095#29095
lg
Gerold
