Was ist der Unterschied zwischen StringIO und io.StringIO in Python2.7?
Neben den offensichtlichen (eine ist eine Art, die andere Klasse)? Was sollte bevorzugt werden? Keinen wesentlichen Unterschied in der Verwendung Fällen, vielleicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://docs.python.org/library/io.html#io.StringIO
http://docs.python.org/library/stringio.html
Sehe ich das.
io.StringIO
ist eine Klasse. Es behandelt Unicode. Es spiegelt die bevorzugte Python 3 library-Struktur.StringIO.StringIO
ist eine Klasse. Es verarbeitet strings. Es spiegelt das Erbe Python-2-Bibliothek-Struktur.Bewegen sich immer nach vorne in Richtung der neuen Bibliothek Organisation. Die
io.open
sollte verwendet werden, um ersetzen Sie die eingebaute Unicode-bewusstopen
.Vorwärts. Vorwärts bewegen.
argparse
. Der beste Weg, fand ich um tests, die in 2-und 3 wartry: from StringIO import StringIO except ImportError: from io import StringIO
.In Bezug auf python 2.7 und 3:
io.BytesIO
ist eine in-memory file-like-Objekt, das nicht jede änderung der Zeilenumbrüche, und ist ähnlich zuopen(filename, "wb")
. Es befassen sich mitbytes()
Streicher, die py2.7 ist ein alias fürstr
.io.StringIO
ist eine in-memory file-like-Objekt, das hat tun, änderungen an Zeilenumbrüchen, und ist ähnlich zuopen(filename, "w")
. Es befassen sich mitunicode()
Zeichenfolgen, die in py3.x ist ein alias fürstr
.py2.7 alte
StringIO.StringIO
ist eine in-memory file-like-Objekt, das nicht tun, änderungen an Zeilenumbrüchen, und ist ähnlich zuopen(filename, "w")
. Es befasst sich sowohl mit derunicode()
undbytes()
in der gleichen Weise, dass die meisten veraltete python-2 string-Methoden tun: indem Sie Sie zu mischen, ohne Fehler, aber nur solange, wie man Glück hat.Damit py2.7 alte
StringIO.StringIO
Klasse ist eigentlich mehr ähnlich wie io.BytesIO als io.StringIO, wie es ist, die in Bezug auf bytes()/str() und nicht newline Konvertierungen.Nicht verwenden
StringIO.StringIO
, verwenden Sie stattdessenio.BytesIO
oderio.StringIO
je nach Anwendungsfall. Diese vorwärts-kompatibel mit python 3 und verpflichtet sich zu Byte oder unicode, sondern als "sowohl-als-vielleicht".