Bevezetés
A Python programozók intenzíven használnak tömböket, listákat és szótárakat soros adatszerkezetként. Ezeknek az adatstruktúráknak a folyamatos tárolásához fájlra vagy adatbázisra van szükség a megfelelő működéshez.
Ebben a cikkben megnézzük, hogyan írhatunk listát fájlba, és hogyan olvashatjuk vissza a listát a memóriába.
Nak nek írjon adatokat egy fájlba, és a adatok olvasása fájlból, a Python programozási nyelv kínálja a szabványos módszereket write()
és a read()
egyetlen sor kezeléséhez, valamint writelines()
és a readlines()
több sor kezeléséhez. Továbbá mind a pickle
és a json
A modulok okos módszereket tesznek lehetővé a soros adatkészletek kezelésére is.
az olvas() és a ír() Mód
A karakterek (karakterláncok) kezelésére az alap read()
és a write()
a módszerek kiválóan működnek. Egy ilyen lista soronkénti mentése a fájlba listfile.txt
a következőképpen végezhető el:
places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
with open('listfile.txt', 'w') as filehandle:
for listitem in places:
filehandle.write(f'{listitem}n')
A listitem
sortöréssel meghosszabbodik "n"
, először, majd eltároljuk a kimeneti fájlban. Most megnézhetjük, hogyan olvashatjuk ki a teljes listát a fájlból listfile.txt
vissza a memóriába:
places = []
with open('listfile.txt', 'r') as filehandle:
for line in filehandle:
curr_place = line[:-1]
places.append(curr_place)
Ne feledje, hogy el kell távolítania a sortörést a karakterlánc végéről. Ebben az esetben segítségünkre van, hogy a Python a karakterláncokon is engedélyezi a listaműveleteket. Ezt az eltávolítást egyszerűen listaműveletként hajtják végre magán a karakterláncon, amely mindent megtart, kivéve az utolsó elemet. Ez az elem tartalmazza a karaktert "n"
amely a sortörést jelenti UNIX/Linux rendszereken.
az írási sorok () és a readlines() Mód
Ahogy a cikk elején említettük, a Python két módszert is tartalmaz – writelines()
és a readlines()
– egy lépésben több sor írása, illetve elolvasása. Írjuk a teljes listát egy fájlba a lemezen:
places_list = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
with open('listfile.txt', 'w') as filehandle:
filehandle.writelines(f"{place for place in places_list}n")
A teljes lista olvasásához egy lemezen lévő fájlból a következőkre van szükségünk:
places = []
with open('listfile.txt', 'r') as filehandle:
filecontents = filehandle.readlines()
for line in filecontents:
curr_place = line[:-1]
places.append(curr_place)
A fenti kód egy hagyományosabb, más programozási nyelvekből kölcsönzött megközelítést követ. Írjuk meg bővebben Pythonic út:
places = []
with open('listfile.txt', 'r') as filehandle:
places = [current_place.rstrip() for current_place in filehandle.readlines()]
Először is a fájl tartalma beolvasásra kerül readlines()
. Másodszor, a for
ciklus minden sorból a sortörés karakter eltávolításra kerül a rstrip()
módszer. Harmadszor, a karakterlánc új listaelemként hozzáadódik a helyek listájához.
Az előtti listához képest a kód sokkal kompaktabb, de a kezdő Python programozók számára nehezebb lehet olvasni.
A Joblib modul használata
Az eddig ismertetett kezdeti módszerek úgy tárolják a listát, hogy az emberek még el tudják olvasni – szó szerint egy szekvenciális lista egy fájlban. Ez kiválóan alkalmas egyszerű jelentések készítésére vagy export fájlok (például CSV-fájlok) kiadására a felhasználók számára további használatra. Ha azonban az a cél, hogy egy listát egy fájlba sorozzon, amely később betölthető, akkor nincs szükség arra, hogy azt ember által olvasható formátumban tárolja.
A joblib
modul biztosítja a legegyszerűbb módot a Python objektumok kiíratására (valójában bármilyen objektum lehet):
import joblib
places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
joblib.dump(places, 'places.sav')
places = joblib.load('places.sav')
print(places)
joblib
továbbra is a legegyszerűbb és legtisztább módja az objektumok hatékony formátumban történő sorozatosításának és későbbi betöltésének. Bármilyen tetszőleges formátumot használhat, mint pl .sav
, .data
, stb. Nem igazán számít – mindkettő joblib
és alternatívák, mint pl pickle
jól beolvassa a fájlokat.
az pác Modulok
A joblib
, tudjuk használni pickle
! Az dump()
módszer hatékonyan tárolja a listát bináris adatfolyamként. Először is a kimeneti fájl listfile.data
meg van nyitva bináris írásra ("wb"
). Másodszor, a lista a megnyitott fájlban tárolódik a dump()
eljárás:
import pickle
places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']
with open('listfile.data', 'wb') as filehandle:
pickle.dump(places, filehandle)
Következő lépésként a listát a következőképpen olvassuk ki a fájlból. Először is a kimeneti fájl listfile.data
binárisan meg van nyitva olvasásra ("rb"
). Másodszor, a helyek listája betöltődik a fájlból a load()
eljárás:
import pickle
with open('listfile.data', 'rb') as filehandle:
placesList = pickle.load(filehandle)
A két példa a karakterláncok használatát mutatja be. Habár, pickle
mindenféle Python objektummal működik, például karakterláncokkal, számokkal, öndefiniált struktúrákkal és minden más beépített adatstruktúrával, amelyet a Python biztosít.
A JSON formátum használata
A bináris adatformátum pickle
felhasználása a Pythonra jellemző. A különböző programok közötti együttműködés javítása érdekében a JavaScript Object Notation (JSON) egy könnyen használható és ember által olvasható sémát biztosít, így nagyon népszerűvé vált a fájlok sorosítása és API-kon keresztüli megosztása terén.
Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!
A következő példa bemutatja, hogyan írhat vegyes változótípusok listáját egy kimeneti fájlba a json modult. Miután megnyitotta a kimeneti fájlt írásra, a dump()
metódus az alaplistát a fájlban tárolja a JSON jelöléssel:
import json
basic_list = [1, "Cape Town", 4.6]
with open('listfile.txt', 'w') as filehandle:
json.dump(basic_list, filehandle)
A kimeneti fájl tartalmának visszaolvasása a memóriába olyan egyszerű, mint az adatok írása. A megfelelő módszer dump()
a neve load()
:
import json
with open('listfile.txt', 'r') as filehandle:
basic_list = json.load(filehandle)
Következtetés
A fent bemutatott különböző módszerek az adatok egyszerű írásától/olvasásától kezdve egészen az adatok kiírásáig/betöltéséig, bináris adatfolyamokon keresztül, pickle és JSON használatával. Ez leegyszerűsíti a lista folyamatos tárolását és visszaolvasását a memóriába.