csv.DictWriter în Python

CSV Python 3.0+

Scrie dicționare într-un CSV, cu coloanele în ordinea aleasă.

Sintaxă
w = csv.DictWriter(fisier, fieldnames, restval="", extrasaction="raise")
w.writeheader()
w.writerow(dictionar)

Ce face csv.DictWriter

DictWriter primește lista coloanelor (fieldnames), iar writeheader() scrie rândul de antet. writerow(d) și writerows(lista) scriu dicționare, punând valorile în ordinea coloanelor.

Cheile lipsă primesc restval. Cheile în plus dau ValueError, cu excepția cazului în care extrasaction="ignore".

Parametri

Parametru Descriere
fieldnames Coloanele, în ordine.
restval Valoarea pentru cheile lipsă.
extrasaction 'raise' sau 'ignore' pentru chei în plus.

Ce returnează

Un obiect writer.

Exemple

Exemplul 1: Export de utilizatori

import csv
from pathlib import Path
utilizatori = [
    {"nume": "Ana", "email": "ana@exemplu.ro", "parola": "secret"},
    {"nume": "Dan", "oras": "Cluj"},
]
with open("utilizatori.csv", "w", encoding="utf-8", newline="") as f:
    w = csv.DictWriter(f, fieldnames=["nume", "email", "oras"], restval="-", extrasaction="ignore")
    w.writeheader()
    w.writerows(utilizatori)
print(Path("utilizatori.csv").read_text(encoding="utf-8"))

Rezultat

nume,email,oras
Ana,ana@exemplu.ro,-
Dan,-,Cluj

Greșeli frecvente

  • Un dicționar are o cheie care nu e în fieldnames și primești ValueError: dict contains fields not in fieldnames. Adaugă coloana sau folosește extrasaction="ignore".

Comenzi înrudite

  • csv.writer(): Scrie liste de valori într-un fișier CSV, cu ghilimele puse automat unde trebuie.
  • csv.DictReader: Citește un CSV cu antet, fiecare rând ca dicționar {coloană: valoare}.
  • json.dump(): Scrie o valoare Python, ca JSON, direct într-un fișier deschis.