¿Cómo creo un objeto similar a un archivo (el mismo tipo de pato que File) con el contenido de una cadena?¿Cómo envuelvo una cadena en un archivo en Python?
Respuesta
Para Python 2.x, utilice el módulo StringIO. Por ejemplo:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
utilizo cStringIO (que es más rápido), pero tenga en cuenta que no es así accept Unicode strings that cannot be encoded as plain ASCII strings. (Puede cambiar a StringIO cambiando "de cStringIO" a "de StringIO").
Para Python 3.x, utilice el módulo io
.
f = io.StringIO('foo')
En Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
@ABB la respuesta aceptada muestra dicho uso ya. Mi respuesta es complementaria: demuestra el enunciado 'con' y los métodos de escritura, impresión, búsqueda, lectura. – jfs
Dos buenas respuestas. Yo añadiría un pequeño truco - si necesita un objeto de archivo real (algunos métodos esperan que uno, no sólo una interfaz), aquí es una manera de crear un adaptador:
"Página no encontrada" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs
Qué vergüenza. No se puede encontrar el original ... –
Parece estar copia de seguridad ahora (7 años después;) –
Este funciona para Python2.7 y Python3.x:
io.StringIO(u'foo')
- 1. ¿Cómo envuelvo un constructor?
- 2. ¿Cómo envuelvo una función en Javascript?
- 3. ¿Cómo envuelvo una extensión Ruby C en una Ruby Gem?
- 4. ¿Cómo encuentro un número en una cadena en Python?
- 5. ¿Cómo envuelvo un java.util.concurrent.Future en un Akka Future?
- 6. ¿Cómo envuelvo una clase de C++ con Cython?
- 7. ¿Cómo comprime gzip una cadena en Python?
- 8. ¿Cómo envuelvo una interfaz C++ (clase abstracta) en C++/CLI?
- 9. ¿Cómo concateno un booleano en una cadena en Python?
- 10. ¿Cómo modifico un solo carácter en una cadena, en Python?
- 11. ¿Cómo convierto una cadena en un buffer en Python 3.1?
- 12. Leer el objeto del archivo como una cadena en python
- 13. ¿Cómo leer un archivo en una cadena en java?
- 14. ¿Cómo reemplazar una cadena en un archivo existente en Perl?
- 15. ¿Cómo escribir una cadena en un archivo en C?
- 16. Cómo guardar una cadena en un archivo .txt en Delphi?
- 17. Python: Convierta una cadena en un entero
- 18. dividir una cadena en Python
- 19. PHP buscando una cadena en un archivo
- 20. ¿Cómo declarar una cadena larga en Python?
- 21. revertir una cadena en Python
- 22. ¿Cómo escribo una cadena XML en un archivo?
- 23. ¿Cómo puedo convertir una cadena en una lista en Python?
- 24. ¿Cómo puedo dividir un archivo en python?
- 25. ¿Cómo leo una línea aleatoria de un archivo en Python?
- 26. Cómo cerrar un archivo en Python sin asignar una variable
- 27. leyendo un archivo en python
- 28. crear un archivo tmp en Python
- 29. Si tengo el contenido de un archivo zip en una cadena de Python, ¿puedo descomprimirlo sin escribirlo en un archivo?
- 30. Dividir una cadena en 2 en Python
Ahora hay una razón para usar cStringIO: cStringIO no admite cadenas de caracteres unicode. –
Creo que una mejor idea es hacer 'importar cStringIO como StringIO'. De esta forma, si necesita cambiar a la implementación de python puro por alguna razón, solo necesita cambiar una línea. –
Esto también funciona para Python2.7: 'io.StringIO (u'foo ')' Usaría esto – guettli