Comment lire et écrire des fichiers en Python
Au-delà des scripts les plus simples, la programmation Python nécessite souvent de lire ou d'écrire des fichiers externes. Python offre des fonctions intégrées simples et puissantes pour manipuler les fichiers. Voici les bases essentielles.
Ouvrir un fichier
Avant d'ouvrir un fichier, déterminez :
- Le mode d'accès : lecture (
r), écriture (w), ajout (a), lecture/écriture (r+). N'ouvrez qu'avec les permissions nécessaires. - Le type de données : texte/ASCII (défaut) ou binaire (ajoutez
b:rb,wb). Le mode texte gère automatiquement les fins de ligne selon l'OS.
Exemple d'ouverture
f = open("/chemin/vers/fichier.txt", "r") # lecture texte
f = open("/chemin/vers/image.png", "wb") # écriture binaire
Lire depuis un fichier
1. Lecture ligne par ligne (recommandé pour les fichiers texte)
for ligne in f:
print(ligne.strip()) # .strip() retire le \n final
2. Se positionner dans le fichier (seek)
f.seek(100) # aller au 100e octet (depuis le début)
f.seek(10, 1) # avancer de 10 octets depuis la position actuelle
# Arguments seek(offset, whence) : whence=0 (début), 1 (actuel), 2 (fin)
3. Lire des données binaires
donnees = f.read(16) # lit 16 octets
tout = f.read() # lit tout le reste du fichier
Écrire dans un fichier
1. Écrire du texte ou des données binaires
f.write("Ce texte sera écrit dans le fichier")
# En mode binaire, passez un objet bytes : f.write(b"data")
2. Sérialiser des objets (pickle)
Pour sauvegarder l'état d'un objet Python :
import pickle
pickle.dump(mon_objet, f) # f doit être ouvert en mode binaire écriture ("wb")
3. Fermer le fichier (indispensable)
f.close()
Bonne pratique : le gestionnaire de contexte with
Utilisez with pour une fermeture automatique, même en cas d'erreur :
with open("fichier.txt", "r") as f:
contenu = f.read()
# Le fichier est automatiquement fermé ici
Résumé des modes principaux
| Mode | Description |
|---|---|
r | Lecture (texte), erreur si fichier inexistant |
w | Écriture (texte), écrase le fichier ou le crée |
a | Ajout (texte), crée si inexistant |
rb/wb/ab | Mêmes modes en binaire |
r+ | Lecture/écriture, ne crée pas le fichier |
