2010-08-04 11 views

Respuesta

24

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

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

que ver esto.

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 es una clase. Maneja Unicode. Refleja la estructura preferida de la biblioteca Python 3.

StringIO.StringIO es una clase. Maneja cadenas. Refleja la estructura de la biblioteca heredada de Python 2.

What should be preferred?

Avanzar siempre hacia la nueva organización de la biblioteca. El io.open se debe utilizar para reemplazar el Unicode-aware no incorporado open.

Delantero. Avanzar

+4

En realidad, seguir adelante con el comportamiento de io.StringIO puede causar problemas si los otros 2.7 paquetes/módulos aún no son compatibles con Unicode. Al menos lo hizo para mí cuando gunicornio "avanzó" y Django no [aquí] (https://github.com/benoitc/gunicorn/pull/728/files) y [aquí] (https: //code.djangoproject .com/ticket/20185). – hobs

+1

@hobs Me tocó el mismo problema al tratar de usar io.StringIO para mock.patch 'argparse'. La mejor forma que encontré para hacer que las pruebas se ejecutaran en 2 y 3 fue 'try: from StringIO import StringIO except ImportError: from io import StringIO'. – jtpereyda

Cuestiones relacionadas