Comment puis-je ouvrir plusieurs fichiers en utilisant "with open" en Python?



Answers

Il suffit de remplacer and avec , et vous avez terminé:

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

Je veux changer quelques fichiers en même temps, si je peux écrire à tous. Je me demande si je peux combiner les multiples appels ouverts avec l'instruction 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 ce n'est pas possible, à quoi ressemblerait une solution élégante à ce problème?




Imbriqués avec des déclarations feront le même travail, et à mon avis, sont plus simples à traiter.

Disons que vous avez inFile.txt, et que vous voulez l'écrire dans deux outFile simultanément.

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)

MODIFIER:

Je ne comprends pas la raison de la downvote. J'ai testé mon code avant de publier ma réponse, et cela fonctionne comme je le souhaite: Il écrit à tout outFile, comme la question le demande. Pas d'écriture en double ou ne pas écrire. Donc, je suis vraiment curieux de savoir pourquoi ma réponse est considérée comme fausse, sous-optimale ou quelque chose comme ça.




Links