La manipulation de fichiers texte est une tâche essentielle pour les utilisateurs de Python, qu'ils soient débutants ou professionnels. Lire, modifier, traiter et enregistrer des données se fait en quelques lignes seulement grâce aux outils appropriés du langage. La puissance de Python se manifeste clairement dans sa facilité de gestion des fichiers : il offre des fonctions directes pour accéder au texte, l'organiser et le convertir dans un format adapté à tout projet logiciel, quelle que soit son envergure. La maîtrise des fondamentaux permet aux développeurs d'accomplir leurs tâches rapidement et efficacement, notamment lorsqu'ils travaillent avec des enregistrements, des paramètres ou des données provenant de diverses sources.

Vous manipulez quotidiennement de nombreux fichiers ? Petits et grands ? Désorganisés ou non ? Quelle que soit votre tâche, Python simplifie considérablement la gestion des fichiers. Quelques lignes de code suffisent pour gagner un temps précieux et vous détendre. Découvrons ensemble la magie de Python pour la gestion des fichiers.
Lecture d'un fichier texte
Lorsqu'on travaille avec des enregistrements, des fichiers de configuration, des jeux de données ou tout autre format texte, la première compétence requise est la capacité à lire efficacement un fichier. Python simplifie considérablement ce processus grâce à sa fonction intégrée `open()` et à des techniques de lecture utiles. Bien que `open()` soit la méthode standard, la pratique courante en Python pour manipuler les fichiers consiste à utiliser un gestionnaire de contexte (l'instruction `with`).
with open("server.log", "r") as f:
content = f.read()
print(content)
C'est l'approche « tout charger ». Elle est idéale pour les fichiers de petite ou moyenne taille. Python charge l'intégralité du fichier en mémoire sous forme d'une seule chaîne de caractères. L'utilisation de `with` garantit que Python ferme le fichier. Python gère l'initialisation et la suppression des ressources du fichier.
Si vous souhaitez lire chaque ligne individuellement, utilisez cette méthode :
with open("users.txt", "r") as f:
for line in f:
print(line.strip())
Vous pouvez également tirer parti des fonctions readline() et readlines() en Python.
# Read the first line
with open("data.txt", "r") as f:
first_line = f.readline()
# Read all lines into a list
with open("data.txt", "r") as f:
lines = f.readlines()
La fonction `readline()` est idéale lorsque vous n'avez besoin que d'un nombre précis de lignes. Elle est particulièrement utile pour accéder à des lignes spécifiques par leur index, par exemple `lines[5]`. La fonction `readlines()` présente chaque ligne sous forme de liste, ce qui facilite l'indexation, la segmentation et les transformations rapides.
Écriture dans des fichiers texte
En fin de compte, tout développeur Python a besoin de réécrire des données dans un fichier. Que ce soit pour créer des rapports, enregistrer des données propres ou consigner les scripts, écrire dans les fichiers. La bonne nouvelle, c'est qu'écrire dans un fichier en Python est aussi simple que de le lire. Pour écrire du contenu dans un fichier :
report = "Daily summary: All systems operational.\n"
with open("summary.txt", "w") as f:
f.write(report)
log_entry = "User logged in at 14:32\n"
with open("activity.log", "a") as f:
f.write(log_entry)
lines = [
"apple\n",
"banana\n",
"cherry\n"
]
with open("fruits.txt", "w") as f:
f.writelines(lines)
Recherche dans les fichiers texte
target = "ERROR"
with open("server.log", "r") as f:
for line in f:
if target in line:
print("Found error:", line.strip())
import re
pattern = re.compile(r"User\s+\d+\s+logged\s+in")
with open("activity.log", "r") as f:
for line in f:
if pattern.search(line):
print("Match:", line.strip())

Imaginez des situations où vous devez identifier des identifiants, des horodatages, des formats ou tout élément structuré. Dans cet exemple, nous trouvons les lignes où un utilisateur s'est connecté avec un identifiant numérique.
Remplacement de texte dans les fichiers
La recherche est très pratique. Mais tôt ou tard, vous aurez besoin de modifier le contenu d'un fichier. Python simplifie étonnamment le remplacement de texte une fois les principes de base compris. Pour les tâches de recherche et de remplacement simples, vous pouvez utiliser les opérations sur le texte de Python.
old = "ERROR"
new = "INFO"
with open("server.log", "r") as f:
content = f.read()
updated = content.replace(old, new)
with open("server.log", "w") as f:
f.write(updated)
import re
pattern = r"\bUser\s+(\d+)\b"
replacement = r"Account \1"
with open("activity.log", "r") as f:
content = f.read()
updated = re.sub(pattern, replacement, content)
with open("activity.log", "w") as f:
f.write(updated)
Supposons que vous ayez un fichier texte et que vous ayez besoin de quelques statistiques de base, comme le nombre de lignes, de mots et d'occurrences de mots. Ces informations peuvent être utiles pour l'analyse de texte, la création de rapports et le traitement de données. Python simplifie cette tâche. Vous pouvez utiliser des boucles pour effectuer ces comptages.
line_count = 0
char_count = 0
avec ouvert(« notes.txt », "R") as f:
pour en ligne in f:
nombre_de_lignes += 1
char_count += len(doubler)
impression(« Lignes : »(nombre_de_lignes)
impression(« Personnages : », nombre_de_caractères)
Cette boucle simple fonctionne bien même avec des fichiers volumineux. Lisez une ligne à la fois, comptez-la et notez le nombre total de caractères sur sa longueur. Pour compter les mots :
word_count = 0
with open("notes.txt", "r") as f:
for line in f:
words = line.split()
word_count += len(words)
print("Words:", word_count)
La fonction .split() permet de diviser chaque ligne en une liste de mots, ce qui est idéal pour effectuer des mesures simples basées sur les mots.
Pour une analyse lexicale plus poussée, vous pouvez utiliser le module collections , comme ça:
from collections import Counter
counter = Counter()
with open("notes.txt", "r") as f:
for line in f:
counter.update(line.split())
print(counter.most_common(5))

Si vous souhaitez connaître les mots les plus fréquents, l'outil « Compteur » est extrêmement utile. Il compte les éléments pour vous et peut même vous indiquer les mots les plus fréquents (N) grâce à la fonction .most_common().
Fractionner et fusionner des fichiers
Les fichiers texte peuvent devenir volumineux. Imaginez travailler avec des ensembles de données contenant des millions de lignes, ou des exportations massives difficiles à gérer en une seule fois. Il est parfois nécessaire de diviser un fichier en plusieurs parties, et parfois de fusionner plusieurs fichiers en un seul résultat clair et cohérent. Python gère ces deux tâches avec aisance.
Une méthode pour diviser un fichier consiste à extraire un nombre fixe de lignes et à les écrire dans de nouveaux fichiers. Voici comment procéder :
chunk_size = 10
file_number = 1
current_lines = []
with open("bigdata.txt", "r") as f:
for i, line in enumerate(f, start=1):
current_lines.append(line)
if i % chunk_size == 0:
output_name = f"chunk_{file_number}.txt"
with open(output_name, "w") as out:
out.writelines(current_lines)
current_lines = []
file_number += 1
# write any remaining lines
if current_lines:
output_name = f"chunk_{file_number}.txt"
with open(output_name, "w") as out:
out.writelines(current_lines)
Pour fusionner plusieurs fichiers en un seul module, le module glob de Python est utile.
import glob
with open("merged_output.txt", "w") as outfile:
for filename in glob.glob("logs/log*"):
with open(filename, "r") as infile:
outfile.write(infile.read())
Ici, glob regroupe tous les fichiers commençant par `log` dans un dossier `logs/`, et vous pouvez simplement ajouter leur contenu dans un seul fichier. C'est idéal pour gérer les fichiers journaux quotidiens, exporter des données partielles ou tout dossier contenant des fichiers liés.
Une fois vos outils intégrés, vous pouvez automatiser toutes sortes de tâches répétitives. Par exemple, fusionner les journaux hebdomadaires en un journal mensuel, fractionner les fichiers d'entrée volumineux avant de les intégrer à un script, et bien plus encore.
Gestion des erreurs et opérations sécurisées sur les fichiers
Lorsqu'on travaille avec des fichiers, les choses ne se déroulent pas toujours comme prévu. Les opérations sur les fichiers peuvent échouer pour plusieurs raisons : le fichier peut être inexistant ou votre programme peut ne pas avoir les autorisations nécessaires pour le lire ou l'écrire. Si le script plante en cours d'exécution, vous risquez une corruption des données ou l'absence totale d'écriture dans les fichiers.
Pour des entrées/sorties de fichiers plus sûres, il est recommandé d'utiliser le bloc try/except en Python pour gérer les erreurs Python.
filename = "config.txt"
try:
with open(filename, "r") as f:
data = f.read()
print("File loaded successfully.")
except FileNotFoundError:
print("File not found:", filename)
except PermissionError:
print("You don’t have permission to read this file.")
except Exception as e:
print("Unexpected error:", e)

Cela vous permet de détecter d'éventuels problèmes, comme des fichiers manquants ou des problèmes d'autorisation. Un autre problème courant concerne l'encodage. Pensez donc à vérifier ce point si vous n'êtes pas certain du type d'encodage utilisé par un fichier.
try:
with open("encoding.txt", "r", encoding="utf-8") as f:
content = f.read()
print("File loaded successfully.")
except UnicodeDecodeError:
print("File encoding is not UTF-8. Trying fallback…")
with open("encoding.txt", "r", encoding="latin-1") as f:
content = f.read()
print("Fallback load succeeded:")
print(content)
La maîtrise de la gestion des fichiers texte offre aux développeurs Python un meilleur contrôle sur la gestion et l'organisation des données au sein de leurs projets. Les outils de base du langage suffisent pour la plupart des opérations sans nécessiter de bibliothèques externes, et avec la pratique, ces tâches deviennent plus rapides et plus faciles. Comprendre ces techniques est une étape importante pour quiconque souhaite développer ses compétences en programmation et être capable de réaliser des projets plus professionnels.