Fájlkezelés¶
Pythonban a fájlkezelés első lépése mindig a fájl megnyitása. A fájl megnyitásához a open()
függvényt használjuk. Ennek a függvénynek az első paramétere a fájl neve, míg a második paramétere a fájl megnyitási módját jelöli. A fájlt olvasásra, írásra vagy mindkettőre nyithatjuk meg.
A fájl megnyitási módját az alábbiak szerint adhatjuk meg:
r
: olvasásw
: írás (a fájl tartalma törlődik)a
: hozzáfűzésr+
: olvasás és írásw+
: olvasás és írás (a fájl tartalma törlődik)
A fájl használata után mindig fontos, hogy lezárjuk azt a close()
metódus segítségével.
Fájlok írása¶
Tegyük fel, hogy egy output.txt
nevű fájlba szeretnénk írni. Ehhez először meg kell nyitnunk a fájlt írásra, majd a write()
metódussal írhatunk bele. Az új sor kezdéséhez a \n
karaktert használjuk.
Példa
Lista fájlba írása¶
Adott egy lista, amely gyümölcsöket tartalmaz:
Ezt a listát szeretnénk egy gyumolcsok.txt
fájlba írni úgy, hogy minden elem külön sorba kerüljön.
Első lépésként egy ciklus segítségével bejárjuk a listát, majd az egyes elemeket a fájlba írjuk.
gyumolcsok = ["alma", "barack", "körte"]
file = open("gyumolcsok.txt", "w")
for gyumi in gyumolcsok:
file.write(f"{gyumi}\n")
file.close()
Feladatok¶
Napló
Készíts egy programot, amely bekéri a felhasználótól egy tetszőleges szöveget, majd hozzáfűzi azt egy naplo.txt
fájlhoz az alábbi formátumban:
Például:
Fájlok olvasása¶
Egyszerű szöveges fájl olvasása¶
Egyszerű szöveges fájlokat (például .txt fájlokat) az alábbi módon olvashatunk be:
Hozzuk létre az input.txt
nevű fájlt az alábbi tartalommal:
Futtassuk a programot és ellenőrizzük a kimenetet!
Láthatjuk, hogy több probléma is van.
Az egyik, hogy a sorok végén felesleges sortörés található. Ezt a strip()
metódussal tudjuk eltávolítani.
A másik, hogy a beolvasott szövegekben az ékezetes karakterek nem jelennek meg helyesen. Ezt a fájl megnyitásakor megadott encoding='utf-8'
karakterkódolással tudjuk kezelni.
Módosítsuk a programot az alábbi módon:
Fájl tartalmának beolvasása listába¶
Az előző példában használt módszer hátránya, hogy a fájl tartalma nem kerül eltárolásra. Ehhez szükségünk van egy olyan összetett adatszerkezetre, amely képes tárolni a fájl sorait.
Példa
CSV fájlok olvasása¶
A CSV (Comma Separated Values) fájlokban az adatokat vesszővel választjuk el. A fájl egy táblázatot képvisel, ahol az egyes sorok a rekordokat, az oszlopok pedig a rekordok mezőit jelölik.
CSV példa
Karakter | Rend | Lézerkard színe | Midiklorián szám |
---|---|---|---|
Anakin Skywalker | Jedi | Kék | 20000 |
Luke Skywalker | Jedi | Zöld | 15000 |
Darth Vader | Sith | Piros | 19000 |
A fájlok beolvasása ugyanúgy történik, mint a korábbi példákban, azonban a beolvasás után a sorokat a vessző karakter mentén kell feldarabolni.
CSV beolvasása
Emlékeztető
A strip()
metódus eltávolítja a sor végén található felesleges szóközöket és sortöréseket.
A split()
metódus a sorokat a megadott karakter mentén darabolja fel.
CSV fájl beolvasása listába¶
Az előző példában alkalmazott módszer hátránya, hogy a fájl tartalma nem kerül eltárolásra. Hozzunk létre egy üres listát, majd a sorok kiírása helyett adjuk hozzá a beolvasott sorokat a listához.
CSV beolvasása listába
Első sor eltávolítása¶
Mint láthattuk, a CSV fájl első sora nem valós adatokat tartalmaz, hanem az úgynevezett fejlécet:
starwars.csv | |
---|---|
Ezt el kell távolítanunk a beolvasást követően. Mivel listáról van szó, kivehetjük a legelső elemet (első sort).
Példa
Rendezés oszlop szerint¶
A beolvasott CSV fájl tartalmát lehetőségünk van oszlop szerint rendezni.
Rendezzük a karaktereket midiklorián szám szerint!
Rendezzük a karaktereket lézerkardszín szerint!