2010-08-04 7 views

Antwort

24

http://docs.python.org/library/io.html#io.StringIO

http://docs.python.org/library/stringio.html

Das sehe ich.

An in-memory stream for unicode text. It inherits TextIOWrapper.

This module implements a file-like class, StringIO, that reads and writes a string buffer (also known as memory files).

io.StringIO ist eine Klasse. Es behandelt Unicode. Es spiegelt die bevorzugte Python 3-Bibliotheksstruktur wider.

StringIO.StringIO ist eine Klasse. Es handhabt Zeichenfolgen. Es spiegelt die Legacy Python 2 Bibliotheksstruktur wider.

What should be preferred?

Immer weiter in Richtung der neuen Bibliotheksorganisation. Die io.open sollte verwendet werden, um das integrierte Unicode-unaware open zu ersetzen.

Weiterleiten. Gehe vorwärts.

+4

Tatsächlich kann das Weiterleiten an io.StringIO-Verhalten zu Problemen führen, wenn Ihre anderen 2.7-Pakete/Module noch nicht Unicode-fähig sind. Zumindest war es für mich, als Gunicorn "vorwärts ging" und Django nicht [hier] (https://github.com/benoitc/gunicorn/pull/728/files) und [hier] (https: //code.djangoproject .com/ticket/20185). – hobs

+1

@hobs Ich habe das gleiche Problem versucht, io.StringIO zu mock.patch 'argparse' zu ​​verwenden. Der beste Weg, um Tests in 2 und 3 auszuführen, war 'try: from StringIO import StringIO außer ImportError: from io import StringIO'. – jtpereyda

Verwandte Themen