Articles

Reading and Writing Lists to a File in Python

as serialized data structures, Python programozók intenzíven használja tömbök, listák, szótárak. Ezeknek az adatstruktúráknak a tartós tárolása megköveteli, hogy egy fájl vagy adatbázis működjön együtt. Ez a cikk leírja, hogyan kell írni egy listát a fájlba, és hogyan kell olvasni, hogy a lista vissza a memóriába.

az adatok fájlba írásához, valamint egy fájlból származó adatok olvasásához a Python programozási nyelve a write() és read() standard módszereket kínálja egyetlen sor kezelésére, valamint a writelines() és readlines() több sor kezelésére. Továbbá mind a pickle, mind a json modul lehetővé teszi a szerializált adatkészletek kezelésének okos módjait is.

A

olvasási és írási módszerek segítségével a karakterek (karakterláncok) kezeléséhez az alapvető módszerek kiválóan működnek. Egy ilyen lista soronkénti mentése a listfile.txt fájlba a következőképpen hajtható végre:

# define list of placesplaces = with open('listfile.txt', 'w') as filehandle: for listitem in places: filehandle.write('%s\n' % listitem)

a 6.sorban a listitem meghosszabbodik egy linebreak “\n”, először a kimeneti fájlba tárolva, másodszor. A teljes lista elolvasása a fájllistábólfájlt.txt vissza a memóriába ez a Python kód megmutatja, hogyan működik:

# define an empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: for line in filehandle: # remove linebreak which is the last character of the string currentPlace = line # add item to the list places.append(currentPlace)

ne feledje, hogy el kell távolítania a vonaltörést a karakterlánc végétől. Ebben az esetben segít nekünk, hogy a Python lehetővé teszi a listázási műveleteket a karakterláncokon is. A fenti kód 8. sorában ez az Eltávolítás egyszerűen listaműveletként történik a karakterláncon, amely mindent, kivéve az utolsó elemet. Ez az elem tartalmazza a “\n” karaktert, amely a UNIX/Linux rendszereken a vonaltörést képviseli.

A

writelines és readlines metódusok használata a cikk elején említettek szerint a Python a két módszert is tartalmazza writelines() és readlines() több sor írásához és olvasásához egy lépésben. A teljes lista lemezre írásához a Python kód a következő:

# define list of placesplaces_list = with open('listfile.txt', 'w') as filehandle: filehandle.writelines("%s\n" % place for place in places_list)

a teljes lista olvasása a lemezen lévő fájlból a Python kód a következő:

# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: filecontents = filehandle.readlines() for line in filecontents: # remove linebreak which is the last character of the string current_place = line # add item to the list places.append(current_place)

a fenti felsorolás egy hagyományosabb megközelítést követ, amelyet más programozási nyelvektől kölcsönöztek. Ha Pitonikus módon szeretné megírni, nézze meg az alábbi kódot:

# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: places = 

miután megnyitotta a listfile.txt fájlt az 5.sorban, a lista visszaállítása teljes egészében a 6. sorban történik. Először is, a fájl tartalmát olvassa keresztül readlines(). Másodszor, egyfor hurokban minden sorból a linebreak karakter eltávolításra kerül arstrip()módszerrel. Harmadszor, a karakterlánc új listaelemként kerül hozzáadásra a helyek listájához. Összehasonlítva a lista előtt a kód sokkal kompaktabb, de nehezebb lehet olvasni a kezdő Python programozók.

a savanyúság modul használata

a különböző módszerek eddig magyarázták a listát oly módon, hogy az emberek még mindig el tudják olvasni. Abban az esetben, ha erre nincs szükség, a savanyúság modul nagyon hasznos lehet az Ön számára. Adump() módszer hatékonyan tárolja a listát bináris adatfolyamként. Először is, a 7.sorban (az alábbi kódban) a listfile.data kimeneti fájl bináris íráshoz (“wb”) nyílik meg. Másodszor, a 9. sorban
a listát a megnyitott fájl tárolja a dump() módszerrel.

# load additional moduleimport pickle# define a list of placesplacesList = with open('listfile.data', 'wb') as filehandle: # store the data as binary data stream pickle.dump(placesList, filehandle)

a következő lépésben a fájlt a következőképpen olvassuk el. Először is, a listfile.data kimeneti fájl bináris formátumban nyílik meg az olvasáshoz (“rb”) a 4.sorban. Másodszor, a helyek listája a load() módszerrel kerül betöltésre a fájlból.

# load additional moduleimport picklewith open('listfile.data', 'rb') as filehandle: # read the data as binary data stream placesList = pickle.load(filehandle)

a két példa itt a húrok használatát mutatja be. Bár, pickle működik mindenféle Python objektumok, mint a húrok, számok, saját definiált struktúrák, és minden más beépített adatstruktúra Python biztosít.

a JSON formátum használata

a bináris adatformátumpickle a felhasználás a Python-ra jellemző. A különböző programok közötti interoperabilitás javítása érdekében a JavaScript Object Notation (JSON) egy könnyen használható, ember által olvasható sémát biztosít, így nagyon népszerűvé vált.

a következő példa bemutatja, hogyan lehet vegyes változótípusok listáját írni egy kimeneti fájlba a json modul segítségével. A 4. sorban az alaplista meg van határozva. Miután megnyitotta a kimeneti fájlt a 7. sorban történő íráshoz, a dump() módszer tárolja az alaplistát a fájlban a JSON jelölés segítségével.

import json# define list with valuesbasicList = # open output file for writingwith open('listfile.txt', 'w') as filehandle: json.dump(basicList, filehandle)

a kimeneti fájl tartalmának visszaolvasása a memóriába olyan egyszerű, mint az adatok írása. A megfelelő módszer, hogy a dump() neve load() lehetőséget, majd a következők szerint működik:

import json# open output file for readingwith open('listfile.txt', 'r') as filehandle: basicList = json.load(filehandle)

Következtetés

A különböző módszerek fent látható tartományban egyszerű írás/olvasás adatokat dömping/terhelési adatok segítségével bináris stream használata uborka, valamint a JSON. Ez leegyszerűsíti a lista tartós tárolását, és visszaolvasását a memóriába.

elismerések

a szerző szeretné megköszönni Zoleka Hatitongwe támogatását a cikk elkészítése során.

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

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