Aller au contenu
Modules & fichiers

Fichiers, pathlib & csv

open avec with lit et écrit des fichiers en les refermant proprement, pathlib.Path manipule les chemins et csv découpe les lignes. Indiquez toujours encoding="utf-8" pour garder les accents.

  • open
  • with
  • fichier
  • pathlib
  • Path
  • csv
  • encoding
  • utf-8

Syntaxe

Modèle
from pathlib import Pathwith open(chemin, "r", encoding="utf-8") as f: ...   # "w" écrit, "a" ajoutePath("dossier") / "fichier.csv"     p.read_text(encoding="utf-8")csv.reader(f, delimiter=";")        csv.DictReader(f)   csv.writer(f)

Exemple

Exemple concret
import csvfrom pathlib import Pathdossier = Path("exports")dossier.mkdir(exist_ok=True)fichier = dossier / "ventes.csv"with open(fichier, "w", encoding="utf-8", newline="") as f:    ecrivain = csv.writer(f, delimiter=";")    ecrivain.writerow(["ville", "montant"])    ecrivain.writerows([["Lyon", "120.5"], ["Paris", "300"], ["Lyon", "80"]])total = {}with open(fichier, encoding="utf-8", newline="") as f:    for ligne in csv.DictReader(f, delimiter=";"):        total[ligne["ville"]] = total.get(ligne["ville"], 0) + float(ligne["montant"])print(total)                                     # → {'Lyon': 200.5, 'Paris': 300.0}print(fichier.name, fichier.suffix, fichier.exists())  # → ventes.csv .csv Trueprint(sorted(p.name for p in dossier.glob("*.csv")))   # → ['ventes.csv']

À retenir

  1. with garantit la fermeture du fichier, même en cas d'erreur ; sans lui, des données écrites peuvent ne jamais atteindre le disque.
  2. Piège : sans encoding="utf-8", Python utilise l'encodage du système (souvent cp1252 sous Windows) et les accents deviennent illisibles ou lèvent UnicodeDecodeError. Pour un CSV enregistré par Excel en « UTF-8 », encoding="utf-8-sig" retire le BOM du début.
  3. Path("data") / "ventes.csv" construit un chemin valable sous Windows comme sous Linux ; p.stem, p.suffix, p.parent et p.glob("*.csv") évitent de découper des chaînes à la main.
  4. Ouvrez un CSV avec newline="" pour le module csv, et parcourez les gros fichiers ligne par ligne (for ligne in f) plutôt que de tout lire avec read().
  5. Dans l'éditeur du Campus, le code tourne dans le navigateur : les fichiers créés vivent sur un disque virtuel effacé au rechargement, et vos fichiers personnels ne sont pas accessibles. Pour un tableau, pandas.read_csv est souvent plus direct.

Voir aussi