Maison > développement back-end > Tutoriel Python > Comment puis-je ouvrir plusieurs fichiers en Python avec une seule instruction « with open » ?

Comment puis-je ouvrir plusieurs fichiers en Python avec une seule instruction « with open » ?

Barbara Streisand
Libérer: 2024-12-06 12:09:12
original
370 Les gens l'ont consulté

How Can I Open Multiple Files in Python with a Single `with open` Statement?

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()
Copier après la connexion

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"
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal