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
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
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
- with garantit la fermeture du fichier, même en cas d'erreur ; sans lui, des données écrites peuvent ne jamais atteindre le disque.
- 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.
- 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.
- 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().
- 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
- JSONLe module json convertit dictionnaires et listes Python en texte JSON, et inversement. C'est le format d'échange des API web, des fichiers de configuration et des exports de nombreux outils.
- pandas — DataFramepandas manipule des tableaux (DataFrame) dont chaque colonne est une Series, comme une table SQL en mémoire. Commencez toujours par charger les données, puis inspecter leur forme et leurs types.
- try / excepttry / except intercepte une erreur prévisible (valeur illisible, clé absente, division par zéro) pour la traiter au lieu d'arrêter le programme. Ne capturez que les erreurs que vous savez gérer.