¿Cómo puedo abrir múltiples archivos usando "con abierto" en Python?


1 Answers

Solo reemplace and con , y 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
Question

Quiero cambiar un par de archivos a la vez, si puedo escribirles a todos. Me pregunto si de alguna manera puedo combinar las múltiples llamadas abiertas con la declaración with :

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

Si eso no es posible, ¿cómo sería una solución elegante a este problema?




Anidado con declaraciones hará el mismo trabajo, y en mi opinión, son más fáciles de tratar.

Digamos que tiene inFile.txt y desea escribirlo en dos archivos de forma simultánea.

with open("inFile.txt", 'r') as fr:
    with open("outFile1.txt", 'w') as fw1:
        with open("outFile2.txt", 'w') as fw2:
            for line in fr.readlines():
                fw1.writelines(line)
                fw2.writelines(line)

EDITAR:

No entiendo la razón de la votación negativa. Probé mi código antes de publicar mi respuesta, y funciona como se desea: se escribe en todos los archivos de OutFile, tal como lo hace la pregunta. No hay escritura duplicada o no se puede escribir. Así que tengo mucha curiosidad por saber por qué mi respuesta se considera incorrecta, subóptima o algo por el estilo.






Related