BytesIO mit Python v2.5
Frage
Frage:
Wie erhalte ich einen Byte-Strom, der wie StringIO für Python 2.5?
funktioniertAnwendung:
Ich bin ein PDF zu Text konvertieren, aber nicht will, um eine Datei auf die Festplatte speichern.
Andere Gedanken:
Ich dachte, ich StringIO verwenden könnte, aber es gibt keinen Modus-Parameter (I guess "String" text-Modus impliziert).
Anscheinend ist die io.BytesIO Klasse neu in v2.6, so dass nicht entweder für mich arbeiten.
Ich habe eine Lösung mit dem tempfile Modul bekam, aber ich möchte vermeiden jeder liest / schreibt an / von der Festplatte.
Lösung
In Python 2.x "string" bedeutet "Bytes" und "Unicode" bedeutet "string". Sie sollten den StringIO
oder cStringIO
Module verwenden. Der Modus wird davon abhängen, welche Art von Daten, die Sie als Puffer Parameter übergeben in.
Andere Tipps
Wenn Sie mit PDF arbeiten, dann sollte StringIO
so lange in Ordnung, wie Sie Rücksicht auf die docs zahlen:
Das StringIO Objekt kann entweder Unicode oder 8-Bit-Strings, akzeptieren aber die beiden Misch kann eine gewisse Sorgfalt. Wenn beide verwendet werden, 8-Bit-Strings, die nicht als 7-Bit-ASCII interpretiert werden können (die den 8. Bit verwenden) bewirkt, dass ein UnicodeError angehoben werden, wenn getvalue () aufgerufen wird.
Hinweis: Dies ist nicht gilt für cStringIO
:
Im Gegensatz zu den Speicherdateien vom Modul StringIO implementiert, die von diesem Modul zur Verfügung gestellt sind nicht in der Lage Unicode-Strings zu akzeptieren, die nicht als reine ASCII-Zeichenfolge codiert werden kann.
Die gesamte Dokumentation an: