Saltar al contenido

¿Cómo puedo abrir varios archivos usando “con abrir” en Python?

Solución:

A partir de Python 2.7 (o 3.1 respectivamente) puede escribir

with open('a', 'w') as a, open('b', 'w') as b:
    do_something()

En versiones anteriores de Python, a veces puede usar
contextlib.nested() para anidar administradores de contexto. Sin embargo, esto no funcionará como se esperaba para abrir varios archivos; consulte la documentación vinculada para obtener más detalles.


En el raro caso de que desee abrir un número variable de archivos al mismo tiempo, puede utilizar contextlib.ExitStack, a partir de la versión 3.3 de Python:

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # Do something with "files"

Sin embargo, la mayoría de las veces tiene un conjunto variable de archivos, es probable que desee abrirlos uno tras otro.

Solo reemplaza and con , y tu estas listo:

try:
    with open('a', 'w') as a, open('b', 'w') as b:
        do_something()
except IOError as e:
    print 'Operation failed: %s' % e.strerror

Para abrir muchos archivos a la vez o para rutas de archivo largas, puede ser útil dividir las cosas en varias líneas. De la Guía de estilo de Python como lo sugiere @Sven Marnach en los comentarios a otra respuesta:

with open('/path/to/InFile.ext', 'r') as file_1, 
     open('/path/to/OutFile.ext', 'w') as file_2:
    file_2.write(file_1.read())
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *