mirror of
https://github.com/m-lamonaca/dev-notes.git
synced 2025-04-07 19:36:40 +00:00
82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# CSV Module Cheat Sheet
|
|
|
|
```python
|
|
# itera linee di csvfile
|
|
.reader(csvfile, dialect, **fmtparams) --> oggetto reader
|
|
|
|
# METODI READER
|
|
.__next__() # restituisce prossima riga dell'oggetto iterabile come una lista o un dizionario
|
|
|
|
# ATTRIBUTI READER
|
|
dialect # descrizione read-only del dialec usato
|
|
line_num # numero di linee dall'inizio dell'iteratore
|
|
fieldnames
|
|
|
|
# converte data in stringhe delimitate
|
|
# csvfile deve supportare .write()
|
|
#tipo None convertito a stringa vuota (semplifica dump di SQL NULL)
|
|
.writer(csvfile, dialect, **fmtparams) --> oggetto writer
|
|
|
|
# METODI WRITER
|
|
# row deve essere iterabile di stringhe o numeri oppure dei dizionari
|
|
.writerow(row) # scrive row formattata secondo il dialect corrente
|
|
.writerows(rows) # scrive tutti gli elementi in rows formattati secondo il dialect corrente. rows è iterdabile di row
|
|
|
|
# METODI CSV
|
|
# associa dialect a name (name deve essere stringa)
|
|
.register_dialect(name, dialect, **fmtparams)
|
|
|
|
# elimina il dialect associato a name
|
|
.unregister_dialect()
|
|
|
|
# restituisce il dialetto associato a name
|
|
.get_dialect(name)
|
|
|
|
# elenco dialetti associati a name
|
|
.list_dialect(name)
|
|
|
|
# restituisce (se vuoto) o setta il limite del campo del csv
|
|
.field_size_limit(new_limit)
|
|
|
|
'''
|
|
csvfile --oggetto iterabile restituente una string ad ogni chiamata di __next__()
|
|
se csv è un file deve essere aperto con newline='' (newline universale)
|
|
dialect --specifica il dialetto del csv (Excel, ...) (OPZIONALE)
|
|
|
|
fmtparams --override parametri di formattazione (OPZIONALE) https://docs.python.org/3/library/csv.html#csv-fmt-params
|
|
'''
|
|
|
|
# oggetto operante come reader ma mappa le info in ogni riga in un OrderedDict le cui chiavi sono opzionali e passate tramite fieldnames
|
|
class csv.Dictreader(f, fieldnames=None, restket=none, restval=None, dialect, *args, **kwargs)
|
|
'''
|
|
f --file da leggere
|
|
fieldnames --sequenza, definisce i nomi dei campi del csv. se omesso usa la prima linea di f
|
|
restval, restkey --se len(row) > fieldnames dati in eccesso memorizzati in restval e restkey
|
|
|
|
parametri aggiuntivi passati a istanza reader sottostante
|
|
'''
|
|
|
|
class csv.DictWriter(f, fieldnames, restval='', extrasaction, dialect, *args, **kwargs)
|
|
'''
|
|
f --file da leggere
|
|
fieldnames --sequenza, definisce i nomi dei campi del csv. (NECESSARIO)
|
|
restval --se len(row) > fieldnames dati in eccesso memorizzati in restval e restkey
|
|
extrasaction --se il dizionario passato a writerow() contiene key non presente in fieldnames extrasaction decide azione da intraprendere (raise causa valueError, ignore ignora le key aggiuntive)
|
|
|
|
parametri aggiuntivi passati a istanza writer sottostante
|
|
'''
|
|
|
|
# METODI DICTREADER
|
|
.writeheader() # scrive una riga di intestazione di campi come specificato da fieldnames
|
|
|
|
# classe usata per dedurre il formato del CSV
|
|
class csv.Sniffer
|
|
.sniff(campione, delimiters=None) #analizza il campione e restituisce una classe Dialect. delimiter è sequenza di possibili delimitatori di caselle
|
|
.has_header(campione) --> bool # True se prima riga è una serie di intestazioni di colonna
|
|
|
|
#COSTANTI
|
|
csv.QUOTE_ALL # indica a writer di citare (" ") tutti i campi
|
|
csv.QUOTE_MINIMAL # indica a write di citare solo i campi contenenti caratteri speciali come delimiter, quote char ...
|
|
csv.QUOTE_NONNUMERIC # indica al writer di citare tutti i campi non numerici
|
|
csv.QUOTE_NONE # indica a write di non citare mai i campi
|
|
```
|