Le avec Le mot - clé en Python est utilisé comme gestionnaire de contexte . Comme dans tout langage de programmation, l’utilisation de ressources telles que les opérations sur les fichiers ou les connexions à des bases de données est très courante. Mais ces ressources sont limitées en quantité. Le principal problème réside donc dans la garantie de libérer ces ressources après utilisation. S'ils ne sont pas publiés, cela entraînera une fuite de ressources et pourrait entraîner un ralentissement ou un crash du système.
Comme nous le savons, la fonction open() est généralement utilisée pour la gestion des fichiers en Python. Mais c'est une pratique courante d'utiliser des gestionnaires de contexte comme avec des mots-clés pour gérer les fichiers, car ils libéreront automatiquement les fichiers une fois leur utilisation terminée.
Python avec open() Syntaxe :
Syntaxe:
avec open(file_path, mode, encoding) comme fichier :
…
chemin du fichier: C'est le chemin d'accès au fichier à ouvrir
mode: mode de fonctionnement sur le fichier. ex. : lire, écrire etc. (représenté par r, w, r+, w+, rb, wb etc.)
codage: lire le fichier dans le format d'encodage correct.
Exemple 1: Exemple simple utilisant l'instruction with
Nous avons déjà un nom de fichier geeksforgeeks.txt dans notre système, et il contient les données suivantes :

geeksforgeeks,txt
Nous allons maintenant ouvrir le fichier et lire le contenu du fichier en utilisant l'instruction with open() :
Python3
tableau d'objets en Java
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
>
>
Sortir:
GeeksForGeeks is best for DSA>
Note: Ici, nous avons utilisé le mode comme r pour lire les données, car le fichier cible contient des données texte. Si nous lisons un fichier binaire, nous devons utiliser rb comme mode.
Exemple 2 : Nous pouvons également utiliser le avec instruction pour ajouter ou écrire des données dans le fichier.
Nous ajouterons la chaîne Salut les geeks ! à notre fichier geeksforgeeks.txt.
Python3
Kat Timf
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > # reading the file contents> # to verify if successfully appended the data> with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > content> => gfg_file.read()> > print> (content)> |
>
>
Sortir:
GeeksForGeeks is best for DSA Hello Geeks!>
Note: Ici nous avons utilisé un comme mode d'ouverture du fichier, c'est parce que nous voulons ajouter des données au fichier. Au lieu de cela, si nous voulions écraser les données du fichier, nous utiliserions le Dans mode.
Exemple 3 : utilisation de l'instruction nested with open pour ouvrir plusieurs fichiers

liens.txt
Nous avons défini un liens.txt fichier contenant des liens aléatoires. Nous ouvrirons le geeksforgeeks.txt fichier mentionné ci-dessus et ajoutez le contenu du fichier de liens dans le geeksforgeeks.txt déposer.
Python3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > with> open> (> 'links.txt'> ,> 'r'> ) as links_file:> > lines> => links_file.readlines()> > gfg_file.writelines(lines)> |
>
>
geeksforgeeks.txt contenu du fichier après modification :

geeksforgeeks,txt
Ici, nous pouvons voir que le contenu du liens.txt le fichier a été ajouté au geeksforgeeks.txt fichier après avoir exécuté le script.
Différence entre l'utilisation d'open() et d'open()
Bien que la fonction d'utilisation ouvrir() et avec ouvrir() est exactement la même chose mais il y a quelques différences importantes :
- En utilisant open(), nous pouvons utiliser le gestionnaire de fichiers tant que le fichier n'a pas été explicitement fermé en utilisant file_handler.close() , mais en cas d'utilisation avec le gestionnaire de contexte open(), nous ne pouvons pas utiliser de gestionnaire de fichiers en dehors du bloc with. Cela augmentera ValueError : opération d'E/S sur un fichier fermé dans ce cas.
- Lors de l'utilisation de open(), nous devons fermer explicitement une instance de fichier ouverte, sinon d'autres parties du code pourraient rencontrer des erreurs lors de l'ouverture du même fichier. Avec open(), la fermeture du fichier est gérée par le gestionnaire de contexte.
- L'utilisation de l'instruction contextuelle with open() rend le code plus ordonné car nous pouvons facilement séparer les blocs de code par différence de retraits. Dans le cas d'open(), nous pourrions manquer la fermeture de l'instance de fichier, cela peut provoquer des fuites de mémoire et d'autres erreurs d'opération d'E/S.