IO
El módulo io
en Python proporciona clases y funciones para trabajar con operaciones de entrada/salida (I/O). Estas clases y funciones permiten leer y escribir datos desde y hacia diferentes fuentes, como archivos, cadenas de texto, bytes, y más. Aquí tienes algunas de las principales funciones y clases del módulo io
, junto con ejemplos:
1. io.StringIO
y io.BytesIO
: Estas clases permiten crear objetos de flujo (stream) en memoria para trabajar con cadenas de texto y datos binarios respectivamente.
import io
# Crear un objeto StringIO para trabajar con cadenas en memoria
cadena_en_memoria = io.StringIO()
cadena_en_memoria.write("Hola, mundo!")
contenido = cadena_en_memoria.getvalue()
print(contenido) # Resultado: "Hola, mundo!"
# Crear un objeto BytesIO para trabajar con datos binarios en memoria
datos_en_memoria = io.BytesIO()
datos_en_memoria.write(b'\x00\x01\x02\x03')
contenido = datos_en_memoria.getvalue()
print(contenido) # Resultado: b'\x00\x01\x02\x03'
2. io.open()
: Esta función se utiliza para abrir archivos en diferentes modos (lectura, escritura, apertura binaria, etc.). Es una forma más avanzada de abrir archivos en comparación con open()
.
import io
# Abrir un archivo de texto para escritura
with io.open('archivo.txt', 'w', encoding='utf-8') as archivo:
archivo.write('Hola, mundo!')
# Leer el contenido del archivo de texto
with io.open('archivo.txt', 'r', encoding='utf-8') as archivo:
contenido = archivo.read()
print(contenido) # Resultado: "Hola, mundo!"
3. io.StringIO
y io.BytesIO
como sustitutos de archivos: Puedes utilizar StringIO
y BytesIO
como sustitutos de archivos en funciones que esperan objetos de archivo, lo que facilita las pruebas y la manipulación en memoria.
import io
# Utilizar StringIO en lugar de un archivo para escribir datos
cadena_en_memoria = io.StringIO()
cadena_en_memoria.write("Datos de prueba")
# Simular una lectura desde un archivo con StringIO
cadena_en_memoria.seek(0)
contenido = cadena_en_memoria.read()
print(contenido) # Resultado: "Datos de prueba"
4. io.TextIOWrapper
: Esta clase se utiliza para envolver objetos de archivo binario y proporcionar una vista de texto.
import io
# Crear un objeto BytesIO para datos binarios
datos_binarios = io.BytesIO()
datos_binarios.write(b'Hello, world!')
# Envolver el objeto BytesIO en un objeto TextIOWrapper
archivo_texto = io.TextIOWrapper(datos_binarios, encoding='utf-8')
# Leer el contenido del archivo de texto
contenido = archivo_texto.read()
print(contenido) # Resultado: "Hello, world!"
El módulo io
es especialmente útil cuando necesitas trabajar con entrada/salida de datos de manera flexible y versátil, y te permite manipular flujos de datos como si fueran archivos reales. Estas son solo algunas de las funciones y clases disponibles en el módulo io
. Puedes explorar más en la documentación oficial de Python según tus necesidades específicas de entrada/salida.