csv – CSV fájl olvasása és írása¶

A modul tartalma¶

A csv modul a következő függvényeket határozza meg:

csv.reader(csvfile, dialect = “excel”, ** fmtparams ) ¶

Visszaad egy olyan olvasóobjektumot, amely az adott csvfile-ben sorok felett fog ismétlődni. A csvfile bármely olyan objektum lehet, amely támogatja az iterátor protokollt, és minden alkalommal visszahúzza az __next__() módszer meghívását – a fájlobjektumok és a listaobjektumok egyaránt alkalmasak. Ha a csvfile fájlobjektum, akkor azt a newline="" paranccsal kell megnyitni. 1 Adható egy optionaldialect paraméter, amely egy adott CSV-dialektusra jellemző paraméterkészlet meghatározására szolgál. Lehet a Dialect osztály egyik alosztályának példánya, vagy a list_dialects() függvény által visszaadott karakterláncok egyike. A többi opcionális fmtparams kulcsszó argumentum megadható az egyes formázási paraméterek felülírására az currentdialect alkalmazásban. A nyelvjárással és a formázási paraméterekkel kapcsolatos részletes információkért lásd: Dialektusok és formázási paraméterek.

A csv fájlból olvasott sorok karakterláncokként kerülnek visszaadásra. Az automatikus adattípus-átalakítást csak akkor hajtják végre, ha a QUOTE_NONNUMERIC formátumopciót megadják (ebben az esetben a nem idézett mezőket úszóvá alakítják).

Rövid használati példa:

csv.writer(csvfile, dialect = “excel”, ** fmtparams) ¶

Visszaad egy író objektumot, amely felelős a a felhasználó adatait elválasztott karakterláncokba az adott fájlszerű objektumon. A csvfile bármely objektum lehet write() módszerrel. Ha a csvfile fájlobjektum, akkor azt a newline="" 1 címmel kell megnyitni. Adható egy opcionális dialektparaméter, amely az apartikuláris CSV-dialektusra jellemző paraméterkészlet meghatározására szolgál. Lehet a Dialect osztály egyik alosztályának példánya, vagy a list_dialects() függvény által visszaadott karakterláncok egyike. A többi opcionális fmtparams kulcsszó argumentum megadható az egyes formázási paraméterek felülírására az currentdialect alkalmazásban. A nyelvjárással és a formázási paraméterekkel kapcsolatos részletes információkért lásd: Dialektusok és formázási paraméterek. Annak érdekében, hogy a DB API-t megvalósító modulokkal való lehető legkönnyebb legyen a kezelőfelület, a None értéket üres karakterláncként írják. Noha ez nem visszafordíthatatlan átalakítás, megkönnyíti az SQL NULL adatértékek CSV fájlokba történő kiürítését anélkül, hogy a cursor.fetch* hívásból visszaküldött adatokat előzetesen feldolgoznák. str() írás előtt.

Rövid használati példa:

csv.register_dialect(név]) ¶

Társítsa a nyelvjárást a névhez. a névnek karakterláncnak kell lennie. A Thedialect megadható úgy, hogy átengedi a Dialect alkategóriát, vagy az fmtparams kulcsszó-argumentumokkal, vagy mindkettővel, a kulcsszó-argumentumok felülírva a nyelvjárás paramétereit. A nyelvjárással és a formázási paraméterekkel kapcsolatos további részletekért lásd: A dialektusok és a paraméterek formázása szakasz.

csv.unregister_dialect(név) ¶

Törölje a névvel társított nyelvjárást a nyelvjárási nyilvántartásból. Error felmerül, ha a név nem regisztrált nyelvjárási név.

csv.get_dialect(név) ¶

A névhez társított nyelvjárást adja vissza. Error felvetésre kerül, ha a név nem regisztrált nyelvjárási név. Ez a függvény egy megváltoztathatatlan Dialect értéket ad vissza.

csv.list_dialects() ¶

Adja meg az összes regisztrált nyelvjárás nevét.

csv.field_size_limit() ¶

Visszaadja az aktuális maximális mezőméretet az elemző megengedte. Ha a new_limit megkapja, akkor ez lesz az új korlát.

A csv modul a következő osztályokat határozza meg:

classcsv.DictReader(f, mezőnevek = Nincs, restkey = Nincs, restval = Nincs, dialektus = “excel”, * args, ** kwds) ¶

Objektum létrehozása amely úgy működik, mint egy normál olvasó, de az egyes sorokban lévő információkat egy dict -hez térképezi fel, amelynek kulcsait az opcionális fieldnames paraméter adja.

A fieldnames paraméter egy szekvencia. A mezőnevek elhagyása esetén az f fájl első sorának értékei lesznek a mezőnevek. A mezőnevek meghatározásának módjától függetlenül a szótár megőrzi eredeti sorrendjüket.

Ha egy sornak több mezője van, mint mezőnevének, a fennmaradó adatokat listába helyezi, és a restkey által megadott mezőnévvel tárolja (amely alapértelmezés szerint None). Ha egy nem üres sornak kevesebb mezője van, mint a mezőneveknek, akkor az ezek értékét kitöltjük a restval értékével (amely alapértelmezés szerint None).

Az összes többi opcionális vagy kulcsszó argumentum átkerül az alapul szolgáló reader példányba.

Megváltozott a 3.6 verzióban: A visszaadott sorok most OrderedDict típusú.

Megváltozott a 3.8 verzióban: A visszaküldött sorok most dict.

Rövid használati példa:

classcsv.DictWriter( f, mezőnevek, restval = “”, extrasaction = “emelés”, dialektus = “excel”, * args, ** kwds) ¶

Hozzon létre egy olyan objektumot, amely úgy működik, mint egy hagyományos író, de feltérképezi a szótárakat a kimeneti sorokhoz. A fieldnames paraméter egy sequence kulcs, amely azonosítja a writerow() metódushoz átadott értékeket a fájlban. Az opcionális restval paraméter meghatározza az átírandó értéket, ha a szótárból hiányzik egy kulcs a mezőnevekben. Ha a writerow() metódushoz továbbított szótár olyan kulcsot tartalmaz, amely nem található belső nevek között, akkor az opcionális extrasaction paraméter jelzi, hogy milyen műveletet kell végrehajtani. Ha "raise", az alapértelmezett érték, egy ValueError felvetésre kerül. Ha ez "ignore" értékre van állítva, akkor a szótárban lévő extra értékeket figyelmen kívül hagyjuk. opcionális vagy kulcsszó argumentumokat továbbítják az alapul szolgáló writer példánynak.

Ne feledje, hogy a DictReader osztálytól eltérően a mezőnevek A DictWriter osztály paramétere nem választható.

Rövid használati példa:

classcsv.Dialect

A Dialect osztály egy konténerosztály, amelyre elsősorban az attribútumai miatt támaszkodnak, amelyek egy adott reader vagy writer példány.

classcsv.excel A excel osztály meghatározza az Excel által létrehozott CSV-fájl szokásos tulajdonságait. A "excel" nyelvjárási névvel van bejegyezve. class csv. excel_tab

A excel_tab osztály meghatározza az Excel által generáltTAB-elhatárolt fájl szokásos tulajdonságait. A "excel-tab" nyelvjárási névvel van bejegyezve.

class csv. unix_dialect

A unix_dialect osztály meghatározza a UNIX rendszereken generált CSV szokásos tulajdonságait, azaz az "\n" vonalterminálóként és idézőjeles mezőként használja. A "unix" nyelvjárási névvel van bejegyezve.

Új a 3.2-es verzióban.

class csv. Sniffer

A Sniffer osztályt használják a CSV-fájl formátumának levezetésére.

A Sniffer osztály két módszert kínál:

sniff (minta, elválasztók = Nincs) ¶

Elemzés adja meg az adott mintát, és adjon vissza egy Dialect alosztályt, tükrözve a talált paramétereket. Ha az opcionális elválasztó paraméter meg van adva, akkor azt a lehetséges validdelimiter karaktereket tartalmazó karaktersorozatként értelmezzük.

has_header (minta) ¶

A mintaszöveg elemzése (feltételezhetően benne van CSV formátum), és adja vissza a True parancsot, ha az első sor oszlopfejlécekből áll.

Példa a Sniffer use:

A csv modul a következő állandókat határozza meg:

csv. QUOTE_ALL

Megadja az writer objektumoknak az összes mező idézését.

csv. QUOTE_MINIMAL

utasítja az writer objektumokat, hogy csak azokat a mezőket idézzék, amelyek olyan speciális karaktereket tartalmaznak, mint az elválasztó, az idézőjel vagy a betűk bármelyikének inlineterminator.

csv. QUOTE_NONNUMERIC

utasítja az writer objektumokat az összes nem numerikus mező idézésére .

Utasítja az olvasót, hogy konv tegye ki az összes nem idézett mezőt az úszó beírásához.

csv. QUOTE_NONE

Utasít writer objektumok, amelyek soha nem idéznek mezőket. Amikor az currentdelimiter megjelenik a kimeneti adatokban, azt megelőzi az aktuális escapecharcharacter. Ha az escapechar nincs beállítva, akkor az író Error -t emel fel, ha olyan karaktereket talál, amelyeknek meg kell szabadulniuk.

Utasítja reader az idézőjelek különleges feldolgozásának végrehajtása nélkül.

A csv modul a következő kivételt határozza meg:

kivétel csv. Error

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük