English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Python

Contrôle des flux Python

Fonctions en Python

Types de données en Python

Opérations sur les fichiers Python

Objets et classes Python

Dates et heures Python

Connaissances avancées Python

Manuel de référence Python

I/O de fichiers Python/O

Qu'est-ce qu'un fichier ?

Un fichier est une position nommée sur le disque dur utilisé pour stocker des informations pertinentes. Il est utilisé pour stocker des données de manière permanente dans un stockage non volatile (comme un disque dur).

Comme la mémoire de stockage aléatoire (RAM) est volatile, les données sont perdues lors de l'arrêt de l'ordinateur, c'est pourquoi nous utilisons des fichiers pour une utilisation future des données.

Lorsque nous devons lire ou écrire dans un fichier, nous devons d'abord l'ouvrir. Une fois terminé, il doit être fermé pour libérer les ressources liées au fichier.

Par conséquent, dans Python, les opérations sur les fichiers s'effectuent dans l'ordre suivant.

  1. Ouvrir le fichier

  2. Lecture ou écriture (exécuter l'opération)

  3. Fermer le fichier

Comment ouvrir un fichier ?

Python a une fonction intégrée open() pour ouvrir des fichiers. Cette fonction retourne un objet fichier, également appelé handle, car il est utilisé pour lire ou modifier le fichier de manière appropriée.

>>> f = open("test.txt")  # Ouvrir le fichier dans le répertoire courant
>>> f = open("C:/Python33/README.txt")  # Spécifier le chemin complet

Nous pouvons spécifier le mode lors de l'ouverture du fichier. Dans le mode, nous indiquons si nous devons lire 'r', écrire 'w' ou ajouter 'a' au fichier. Nous indiquons également si nous devons ouvrir le fichier en mode texte ou binaire.

La configuration par défaut est de lire en mode texte. Dans ce mode, lorsque nous lisons un fichier, nous obtenons une chaîne de caractères.

D'autre part, le mode binaire retourne des octets, ce qui est utilisé pour traiter les fichiers non textuels (comme les images ou les fichiers exe).

Modes de fichier Python
ModeDescription
'r'Ouvrir le fichier pour lire. (par défaut)
'w'Ouvrir le fichier pour écrire. S'il n'existe pas, un nouveau fichier est créé, ou s'il existe, il est tronqué.
'x'Ouvrir le fichier pour une création exclusive. Si le fichier existe déjà, l'opération échoue.
'a'Ouvrir le fichier pour ajouter à la fin sans tronquer. S'il n'existe pas, un nouveau fichier est créé.
't'Ouvrir en mode texte. (par défaut)
'b'Ouvrir en mode binaire.
'+'Ouvrir le fichier pour la mise à jour (lecture et écriture)
f = open("test.txt")  # Équivalent à 'r' ou 'rt'
f = open("test.txt",'w')  # Écrire en mode texte
f = open("img.bmp",'r+b')  # Lire et écrire en mode binaire

Contrairement aux autres langues, le caractère 'a' ne suggère pas de nombre avant d'être codé en ASCII (ou un encodage équivalent)97 .

De plus, le codage par défaut dépend de la plate-forme. Dans Windows, 'cp1252'Mais 'utf-8'Dans Linux.

Par conséquent, nous ne pouvons pas dépendre du codage par défaut, sinon le comportement de notre code pourrait varier sur différentes plates-formes.

Par conséquent, il est fortement recommandé de spécifier le type de codage lors de la manipulation des fichiers en mode texte.

f = open("test.txt",mode = 'r',encoding = 'utf-8)

Comment fermer un fichier en Python ?

Après avoir terminé les opérations sur le fichier, nous devons fermer le fichier correctement.

Fermer le fichier libère les ressources liées au fichier et est réalisé en utilisant la méthode close().

Python a un collecteur de déchets pour nettoyer les objets non référencés, mais, nous ne pouvons en aucun cas compter sur lui pour fermer les fichiers.

f = open("test.txt",encoding = 'utf-8)
# Effectuer des opérations sur le fichier
f.close()

Cette méthode n'est pas complètement sécurisée. Si une exception se produit lors de certaines opérations sur le fichier, le code sortira sans fermer le fichier.

Une méthode plus sécurisée est d'utilisertry ... finallyBloc.

try:
   f = open("test.txt",encoding = 'utf-8)
   # Effectuer des opérations sur le fichier
finally:
   f.close()

De cette manière, nous pouvons nous assurer que le fichier est fermé correctement même si une exception est levée, ce qui arrête le flux du programme.

Le meilleur moyen est d'utiliser la phrase with. Cela garantit que le fichier est fermé lorsque le bloc interne quitte.

Nous n'avons pas besoin de called explicitement la méthode close(). Elle est effectuée en interne.

with open("test.txt",encoding = 'utf-8) as f:
   # Effectuer des opérations sur le fichier

Comment écrire dans un fichier en Python ?

Pour écrire dans un fichier en Python, nous pouvons écrire en mode 'w', ajouter en mode 'a' ou créer en exclusivité en mode 'x'.

Nous devons utiliser prudemment le mode 'w', car il remplacera le fichier (si il existe). Toutes les données précédentes seront supprimées.

Écrire une chaîne de caractères ou une séquence d'octets (pour les fichiers binaires) est réalisé en utilisant la méthode write(). Cette méthode retourne le nombre de caractères écrits dans le fichier.

with open("test.txt",'w',encoding = 'utf-8) as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Si 'test.txt' n'existe pas, le programme créera un fichier nommé. S'il existe déjà, il le remplacera.

Nous devons inclure nous-mêmes les caractères de retour chariot pour distinguer les différentes lignes.

Comment lire un fichier en Python ?

Pour lire un fichier en Python, nous devons ouvrir le fichier en mode lecture.

Il y a plusieurs méthodes disponibles pour cela. Nous pouvons utiliser la méthode read(size) pour lireTailleDonnées. Si non spécifiéTailleParamètre, qui lit et renvoie à la fin du fichier.

>>> f = open("test.txt",'r',encoding = 'utf-8)
>>> f.read(4)    # Lire ce qui précède4de données
'Ce'
>>> f.read(4)    # Lire ce qui suit4de données
' est '
>>> f.read()     # Lire le reste jusqu'à la fin du fichier
'mon premier fichier\nCe fichier\ncontient trois lignes\n'
>>> f.read()  # Lire davantage et renvoie une chaîne vide

Nous pouvons voir que la méthode read() renvoie le retour chariot '\n'. Après avoir atteint la fin du fichier, nous obtenons une chaîne vide lors de la lecture supplémentaire.

Nous pouvons utiliser la méthode seek() pour changer le curseur actuel du fichier (position). De même, la méthode tell() renvoie notre position actuelle (en nombre d'octets).

>>> f.tell()    # Obtenir la position actuelle du fichier
56
>>> f.seek(0)   # Déplacer le curseur du fichier à sa position initiale
0
>>> print(f.read())  # Lire tout le fichier
Ceci est mon premier fichier
Ce fichier
contient trois lignes

Nous pouvons utiliserBoucle forLire le fichier ligne par ligne. Cela est à la fois efficace et rapide.

>>> for line in f:
...     print(line, end = '')
...
Ceci est mon premier fichier
Ce fichier
contient trois lignes

Les lignes du fichier elles-mêmes ont un retour chariot '\n'.

De plus, l'argument de fin de print() évite deux retours chariot lors de l'impression.

Ou, nous pouvons utiliser la méthode readline() pour lire les lignes individuelles du fichier. Cette méthode lit le fichier jusqu'au retour chariot, y compris le retour chariot.

>>> f.readline()
'Ceci est mon premier fichier\n'
>>> f.readline()
'Ce fichier\n'
>>> f.readline()
'contient trois lignes\n'
>>> f.readline()

Enfin, la méthode readlines() renvoie une liste de toutes les lignes restantes du fichier. Lorsque nous atteignons la fin du fichier (EOF), toutes ces méthodes de lecture renvoient une valeur vide.

>>> f.readlines()
['Ceci est mon premier fichier\n', 'Ce fichier\n', 'contient trois lignes\n']

Python file methods

File objects have many available methods. Some of them have been used in the above examples.

This is a complete list of methods in text mode, with brief descriptions.

Python file methods
close()Close the file.
detach()Return the separated raw stream (raw stream) from the buffer.
fileno()Return the numeric representation of the stream from the perspective of the operating system.
flush()Refresh the internal buffer.
isatty()Return whether the file stream is interactive.
read()Return the file content.
readable()Return whether it is possible to read the file stream.
readline()Return a line in the file.
readlines()Return the line list in the file.
seek()Change the file position.
seekable()Return whether the file allows us to change the file position.
tell()Return the current file position.
truncate()Adjust the file to the specified size.
writeable()Return whether it is possible to write to the file.
write()Write the specified string to a file.
writelines()Write a string list to a file.