Python >> Tutoriel Python >  >> Python

Fonction Python open() - Un guide 80/20 par exemple

open() intégré de Python La fonction ouvre un fichier et renvoie un objet fichier. Le seul argument non facultatif est un nom de fichier sous la forme d'une chaîne du fichier à ouvrir. Vous pouvez utiliser l'objet file pour accéder au contenu du fichier. Par exemple, file_obj.readlines() lit toutes les lignes d'un tel objet fichier.

Voici un exemple minimal de la façon dont le open() fonction

f_obj = open('code.py')
print(f_obj.readlines())

En supposant que vous stockiez cet extrait de code dans un fichier appelé 'code.py' , il s'ouvre et stocke son contenu dans une liste de chaînes. Voici la sortie du code :

["f_obj = open('code.py')\n", 'print(f_obj.readlines())\n']

Vidéo Python open()

Syntaxe Python open()

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Argumentation file Chaîne. Le nom du fichier à ouvrir.
mode Facultatif chaîne de caractères. Mode d'ouverture du fichier (voir ci-dessous).
buffering Facultatif entier. Politique de mise en mémoire tampon :définissez 0 en mode binaire pour désactiver la mise en mémoire tampon ou 1 en mode texte pour sélectionner la mise en mémoire tampon de ligne. Tout entier> 1 indique la taille en octets d'un tampon de blocs de taille fixe.
encoding Facultatif chaîne de caractères. Nom de l'encodage à décoder ou encoder le fichier (mode texte uniquement).
errors Facultatif chaîne de caractères. Définit la gestion des erreurs d'encodage et de décodage (voir Gestionnaires d'erreurs).
newline Facultatif chaîne de caractères. Comment fonctionne le mode newlines universel. Valeurs possibles :None , '' , '\n' , '\r' , et '\r\n' .
closefd Facultatif booléen. True par défaut . Si False et le descripteur de fichier plutôt que le nom de fichier donné en premier argument, le descripteur de fichier sera maintenu ouvert lorsque le fichier sera fermé.
opener Facultatif ouvreur. Un ouvreur personnalisé défini comme descripteur de fichier de retour appelable. L'objet fichier est alors obtenu en appelant opener(file, flags) .
Valeur de retour file_object Un objet exposant la ressource de fichier correspondante avec des méthodes telles que read() ou write() .

Vous pouvez utiliser les modes de fichier suivants :

Mode Signification
'r' Lecture
'w' Ecriture + écrasement si fichier existant
'x' Création exclusive. Échec si le fichier existe
'a' Écriture + ajout si fichier existant
'b' Mode binaire
't' Mode texte
'+' Mise à jour (lecture et écriture)

Exemple :Comment ouvrir un fichier et lire toutes les lignes ?

Passons en revue les différents modes de fichiers et les façons d'utiliser le Python open() fonction - de manière très aléatoire mais, espérons-le, éducative.

Vous avez déjà vu la manière la plus basique d'utiliser le open() fonction :

f_obj = open('code.py')
print(f_obj.readlines())

Cela ouvre le fichier 'code.py' et lit toutes les lignes du fichier. Par défaut, le fichier s'ouvre en mode lecture seule. Ainsi, l'appel suivant avec le spécificateur 'r' est sémantiquement identique :

f_obj = open('code.py', mode='r')
print(f_obj.readlines())

Comme il s'agit d'un argument de position, l'appel suivant est également identique :

f_obj = open('code.py', 'r')
print(f_obj.readlines())

La sortie de ces trois variantes est la même, en supposant que le code est stocké dans un fichier 'code.py' :

["f_obj = open('code.py', 'r')\n", 'print(f_obj.readlines())\n']

Exemple :Comment ouvrir un fichier et écrire une chaîne ?

Vous pouvez ouvrir un fichier en mode écriture en utilisant le open(filename, 'w') appel de fonction en 'w' mode d'écriture. Cela crée le fichier avec filename —ou écrase le fichier s'il existe déjà. En appelant le f_obj.write(string) sur l'objet fichier nouvellement créé, vous pouvez écrire une chaîne arbitraire dans le fichier. Maintenant, n'oubliez pas de fermer le fichier en utilisant f_obj.close() car ce n'est qu'alors que vous pouvez être sûr que la chaîne écrite est réellement vidée dans le fichier !

Voici le code :

f_obj = open('text.dat', 'w')
f_obj.write('hello world')
f_obj.close()

Le code crée un nouveau fichier 'text.dat' et y écrit la chaîne. Le fichier résultant ressemble à ceci :

ATTENTION :Si vous aviez déjà créé ce fichier, ouverture du fichier en 'w' le mode d'écriture écrase tout le contenu existant ! TOUT LE CONTENU PEUT ÊTRE PERDU !

Au lieu de cela, vous pouvez préférer le mode ajout lors de l'ouverture de votre fichier :

Exemple :Comment ouvrir un fichier et ajouter une chaîne ?

Vous pouvez ouvrir un fichier en mode ajout en utilisant le open(filename, 'a') appel de fonction. Cela crée le fichier avec filename . En appelant le f_obj.write(string) sur l'objet fichier nouvellement créé, vous pouvez écrire une chaîne arbitraire dans le fichier. Si le fichier existe déjà, il ajoute simplement la chaîne à la fin du fichier. Encore une fois, n'oubliez pas de fermer le fichier en utilisant f_obj.close() car ce n'est qu'alors que vous pouvez être sûr que la chaîne écrite est réellement vidée dans le fichier !

Voici le code :

f_obj = open('text.dat', 'a')
f_obj.write('\nhi universe')
f_obj.close()

Le code ajoute la chaîne '\nhi universe' au contenu déjà écrit dans 'text.dat' (voir exemple précédent). Le fichier résultant ressemble à ceci :

Notez le caractère de nouvelle ligne '\n' qui apparaît maintenant comme une nouvelle ligne dans l'éditeur. Vous devez définir explicitement le caractère de nouvelle ligne si vous souhaitez ajouter du contenu dans une nouvelle ligne à la fin d'un fichier existant.

Si le fichier n'existe pas encore, le mode ajout fonctionne comme le mode écriture.

Résumé

open() intégré de Python La fonction ouvre un fichier et renvoie un objet fichier. Le seul argument non facultatif est un nom de fichier sous la forme d'une chaîne du fichier à ouvrir. Vous pouvez utiliser l'objet file pour accéder au contenu du fichier. Par exemple, file_obj.readlines() lit toutes les lignes d'un tel objet fichier.

Voici un exemple minimal de la façon dont le open() fonction

f_obj = open('code.py')
print(f_obj.readlines())

Vous voulez continuer à améliorer vos compétences Python ? Consultez nos aide-mémoire Python gratuits :