Python – fájlkezelés

10. osztály 10.évf Python Programozás Python

Fájlkezelés során valamely háttértárról tudunk beolvasni adatokat a számítógép memóriájába, vagy adatokat kiírni onnan fájlba. Egy fájlnak van neve, kiterjesztése, elérési útja. A benne tárolt adatokat hosszú távon akarjuk megőrizni.

Alapvetően 3 lépés az egész: fájl megnyitása, tatalom beolvasása a memóriába, (módosításuk) fájl lezárása.

Fájl megnyitása: open() függvény

Az open függvény paramétereként a fájl elérési útját kell megadni. (relatív elérési út!)

Egyéb paraméterek:

"r" – Read – Alapértelmezetten olvasásra nyitja meg a fájlt. Ha a fájl nem létezik hibát ad vissza: FileNotFoundError. Tehát célszerű ellenőrizni, hogy létezik-e az adott fájl! os.path.exist(fájlnév)

"a" – Append – Fájl megnyitása hozzáfűzésre (tartalom hozzáadása). Ha a fájl még nem létezik, akkor létrehozza.

"w" – Write – Fájl megnyitása íráshoz, ha nem létezik a fájl akkor ez is létrehozza.

"x" – Create – Létrehozza a megadott fájlt, hibát dob, ha a fájl már létezik

encoding” Karakterkódolás. Alap esetben a Windows az ANSI szabványt használja, ezért célszerű átalakítani a szöveget utf-8-ra, ha nem akarunk furcsa ékezetes karaktereket kapni.

with parancs: ha a with paranccsal együtt nyitjuk meg a fájlt, akkor nem kell külön lezárni!

Alapesetben a fájlokat szövegként kezeli a Python („t” paraméter, elhagyható), de a „b” paraméterrel van lehetőség bináris módra is. pl. képek, hangok, videók stb. esetében.

Fájl bezárása: close() A fájlt megnyitás, olvasás (módosítás) után le is kell zárni!

Fájl tartalmának kiíratása, kicsit részletesebben:

Ha az egészet szimplán ki szeretnénk íratni akkor használjuk a read() metódust. tulajdonképpen a beolvasott tartalmat átirányítjuk a képernyőre.

Van lehetőség csak megadott számú karakter kiírására is. pl: Első 10 karakter kiíratása:

Van lehetőség a fájl első sorának beolvasására is: readline()

Van lehetőség a fájl tartalmát listába is beolvasni a readlines() függvénnyel. Nyilván itt feltételezzük, hogy több sornyi szövegünk van a txt-ben. Ebben a példában minden második sor szövegét iratom ki:

Fájl beolvasása soronként for ciklussal:

Írás fájlba

Itt két lehetőség merül fel: már létező fájl szeretnénk módosítani, vagy új fájlt létrehozni és azzal dolgozni.
Új fájl létrehozása

Ahogy korábban már említettem, az open() metódus különböző paramétereivel tudunk létrehozni új fájlt.

"x" – Új fájlt hoz létre. Ha az adott néven már létezik fájl, hibaüzenetet ad.

"a" – append Hozzáfűzés, ha létezik a fájl. Ha még nem akkor létrehozza.

"w" – write Írás fájlba. Ha még nem létezik a megadott fájl, akkor létrehozza.

Létező fájl módosítása

Az open() függvénnyel tudjuk megnyitni a fájlt, a következő paraméterekkel:
"a" – append – Hozzáfűzés, a szöveg végéhez, tehát az addigi tartalom megmarad.
"w" – write – Felülírja a fájl meglévő tartalmát!

Fájl és könyvtár törlése

Fájl törléséhez importálni kell az ‘os’ modult. Törölni az os.remove() függvénnyel lehet. Törlés előtt is célszerű leellenőrizni, hogy létezik-e a fájl, ne dobjon hibát a program.

Könyvtár törléséhez szintén az os modul szükséges, azon belül az os.rmdir() függvény.

Gyakorlás – fájlkezelés

Írjuk ki a hétköznapokat egy txt fájlba, majd fűzzük hozzájuk a hétvégi napokat is! Írassuk ki a képernyőre a fájl tartalmát!

Fájl tartalmának mentése listába, és csak a megadott feltételeknek megfelelő adatok kiíratása:

alloviz.txt

id nev tipus terulet vizgyujto
1 Gyova-Mámai-Holt-Tisza morotvató 1,33 35
2 Abaligeti-horgásztó mesterséges 0,025
3 Délegyházi-tavak bányató 3,38 3
4 Öregállás III. tó 0,98 1
5 Serházzugi-Holt-Tisza morotvató 1,34 9
6 Palotási-tározó mesterséges 0,58 57
7 Csongrádi-Bokrosi-Sós-tó morotvató 1,21 6
8 Csór-réti-víztározó mesterséges 0,12 8
9 Tunyogmatolcsi-tározó 1,93 1
10 Tiszadobi-Holt-Tisza morotvató 1,03 208