0 XP
?
Python : de zéro à la maîtrise/Manipulation de fichiers
Intermédiaire40 min30 XP

Objectifs de cette leçon

  • Ouvrir et lire un fichier
  • Écrire dans un fichier
  • Utiliser le context manager with

Manipulation de fichiers 📁

Pourquoi manipuler des fichiers ? 🤔

Les programmes travaillent avec des donnees. Les fichiers permettent de :

  • Lire des donnees sauvegardees
  • Ecrire des resultats pour les conserver
  • Traiter de grands volumes de donnees

💡 Sans fichiers, les donnees seraient perdues a la fermeture du programme !


Ouvrir un fichier avec open() 🚪

fichier = open("data.txt", "r")
ModeDescriptionCree le fichier ?
"r"Lecture seule (par defaut)❌ Non (erreur si inexistant)
"w"Ecriture (ecrase le fichier)✅ Oui
"a"Ajout (append) en fin de fichier✅ Oui
"x"Creation exclusive (erreur si existe)✅ Oui
"r+"Lecture + ecriture❌ Non
"w+"Ecriture + lecture (ecrase)✅ Oui
"a+"Ajout + lecture✅ Oui

Le with statement — la bonne methode ✅

# BONNE pratique
with open("bonjour.txt", "w") as f:
    f.write("Hello World !")

# Le fichier est automatiquement FERME ici

💡 with garantit la fermeture du fichier meme en cas d'erreur. Utilise-le TOUJOURS.


Lire un fichier 📖

Methode 1 : read() — tout d'un coup

with open("data.txt", "r") as f:
    contenu = f.read()
    print(contenu)

Methode 2 : readline() — ligne par ligne

with open("data.txt", "r") as f:
    ligne1 = f.readline()
    ligne2 = f.readline()

Methode 3 : readlines() — toutes les lignes

with open("data.txt", "r") as f:
    lignes = f.readlines()
    for ligne in lignes:
        print(ligne.strip())

Methode 4 : Iterer directement ✨

# La plus efficace pour les gros fichiers
with open("data.txt", "r") as f:
    for ligne in f:
        print(ligne.strip())

💡 La methode 4 est la plus efficace en memoire car elle ne charge pas tout le fichier d'un coup.


Ecrire dans un fichier ✏️

# "w" ecrase le fichier existant
with open("output.txt", "w") as f:
    f.write("Premiere ligne\n")
    f.write("Deuxieme ligne\n")

# "a" ajoute a la fin (ne ecrase pas)
with open("output.txt", "a") as f:
    f.write("Troisieme ligne\n")

Chemins de fichiers 🗺️

import os

# Chemin relatif
with open("data/fichier.txt", "r") as f:
    pass

# Chemin absolu
with open("/home/user/documents/fichier.txt", "r") as f:
    pass

# Verifier si un fichier existe
if os.path.exists("data.txt"):
    print("Le fichier existe !")

# Lister les fichiers
fichiers = os.listdir(".")
print(fichiers)

# Chemin courant
print(os.getcwd())

💡 Utilise os.path.join() pour des chemins compatibles tous systemes :

import os
chemin = os.path.join("dossier", "sous_dossier", "fichier.txt")

Manipuler le CSV 📊

import csv

# Ecrire un CSV
donnees = [
    ["Nom", "Age", "Ville"],
    ["Alice", 25, "Paris"],
    ["Bob", 30, "Lyon"],
    ["Charlie", 22, "Marseille"]
]

with open("etudiants.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(donnees)

# Lire un CSV
with open("etudiants.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    en_tete = next(reader)
    for ligne in reader:
        print(f"{ligne[0]} a {ligne[1]} ans, habite a {ligne[2]}")

CSV avec dictionnaires

import csv

with open("etudiants.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(f"{row['Nom']} → {row['Ville']}")

Manipuler le JSON 🌐

import json

# Ecrire du JSON
donnee = {
    "nom": "Alice",
    "age": 25,
    "competences": ["Python", "SQL", "Git"]
}

with open("profil.json", "w", encoding="utf-8") as f:
    json.dump(donnee, f, indent=2, ensure_ascii=False)

# Lire du JSON
with open("profil.json", "r", encoding="utf-8") as f:
    charge = json.load(f)
    print(charge["nom"])  # "Alice"

Conversion Python ↔ JSON

Python → JSONJSON → Python
dictdict
listlist
strstr
int/floatint/float
True/Falsetrue/false
Nonenull

Flux d'operation fichier 🔄


Bonnes pratiques ✅

# 1. Toujours utiliser with
with open("fichier.txt", "r") as f:
    contenu = f.read()

# 2. Specifier l'encodage
with open("fichier.txt", "r", encoding="utf-8") as f:
    contenu = f.read()

# 3. Gerer les erreurs
try:
    with open("fichier.txt", "r") as f:
        contenu = f.read()
except FileNotFoundError:
    print("Fichier introuvable !")
except PermissionError:
    print("Pas les droits d'acces !")

# 4. Pour les gros fichiers, iterer
with open("gros_fichier.csv", "r") as f:
    for ligne in f:
        traiter(ligne)

Exercice pour toi 🎯

# Exercice 1 : Journal de bord
import datetime

def journal(message):
    with open("journal.txt", "a", encoding="utf-8") as f:
        date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
        f.write(f"[{date}] {message}\n")

journal("Debut du projet")
journal("Premier bug trouve")
journal("Bug corrige !")

# Exercice 2 : Convertir CSV → JSON
import csv, json

def csv_vers_json(nom_csv, nom_json):
    with open(nom_csv, "r", encoding="utf-8") as f:
        donnees = list(csv.DictReader(f))
    with open(nom_json, "w", encoding="utf-8") as f:
        json.dump(donnees, f, indent=2, ensure_ascii=False)
    print(f"Converti {len(donnees)} lignes en JSON")

💡 Astuce : La manipulation de fichiers est essentielle pour les projets reels. Entraines-toi avec de vrais fichiers CSV et JSON !

⚡ Simulateur — Manipulation de fichiers

Étape 1/5
📝 Pseudo-code
1with open("data.txt", "w") as f:
2 f.write("Bonjour")
3
4with open("data.txt", "r") as f:
5 contenu = f.read()
6 print(contenu)
⚙️ Exécution
📦 Mémoire
mode
écriture
fichier
"data.txt"
opération
open(w)
🔀 Flux d'exécution
open(w)
3
Ouverture en écriture

Le mot-clé with crée un gestionnaire de contexte. Le mode "w" ouvre le fichier en écriture. Le fichier sera automatiquement fermé à la fin du bloc.