Gestionnaires de contexte pour l'ouverture de plusieurs fichiers en Python
L'instruction with open de Python gère efficacement les opérations sur les fichiers en fermant automatiquement les fichiers à la sortie du bloc with. Cependant, l'ouverture de plusieurs fichiers à l'aide d'instructions open successives présente un défi si vous voulez vous assurer que tous les fichiers peuvent être écrits.
Combiner plusieurs avec des instructions open
La syntaxe présenté dans la question, en essayant de combiner les instructions with open avec le mot-clé and, n'est pas valide. Pour obtenir la fonctionnalité souhaitée, Python 2.7 (ou 3.1) et les versions ultérieures ont introduit une modification qui vous permet de séparer simplement plusieurs avec des instructions ouvertes par des virgules :
with open('a', 'w') as a, open('b', 'w') as b: do_something()
Cette syntaxe gère correctement le contexte de plusieurs fichiers, les fermer à la sortie du bloc with.
Alternative pour un nombre variable de fichiers
Dans les cas là où vous devrez peut-être ouvrir un nombre variable de fichiers, la classe contextlib.ExitStack fournit une solution à partir de Python 3.3 :
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
Ouverture de fichiers séquentielle ou simultanée
Il est important de noter qu’ouvrir plusieurs fichiers simultanément n’est pas toujours idéal. Dans la plupart des cas, le traitement des fichiers de manière séquentielle est une approche plus courante :
for fname in filenames: with open(fname) as f: # Process f
Cette approche évite les problèmes potentiels liés à la gestion des ressources et au verrouillage des fichiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!