Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Fájlok olvasása és feldolgozása

Amikor nagyobb mennyiségű adatokkal dolgozunk, ezeket általában nem a konzolról olvassuk be, hanem például szövegfájlokból. Erre természetesen a Python is lehetőséget kínál az open függvény használatával. Az open használható arra, hogy egy fájlt megnyissunk akár olvasásra, akár a későbbiek során majd írásra. Két paramétere fontos számunkra: az első a szövegfájl neve, a második pedig a megnyitás módja, ami jelenleg r, mivel olvasásra szeretnénk használni a fájlt. Íme egy példa:

fajl = open("szoveg.txt", "r")

A megnyitott fájl eléréséhez utána ezt a változót fogjuk tudni használni.

Fájl soronkénti végigolvasása for ciklussal

Típuskonverzió
Ne feledd! A fájlok soronkénti beolvasásakor az adatok szövegként kerülnek beolvasásra, akkor is, ha az adott sor csak számjegyekből áll. Ne feledkezz meg az esetleges típuskonverzióról!
A legegyszerűbb megoldás a fájl teljes tartalmának beolvasására egy for ciklus használata. Ennek átadva a megnyitott fájlt, megkaphatjuk annak sorait, és feldolgozhatjuk, vagy letárolhatjuk őket. Érdemes azonban megjegyezni, hogy a megkapott sorok a végükön tartalmazzák az új sor karaktert is, ezért a beolvasott információra érdemes alkalmazni a strip függvényt, amely segít a sor elejéről, illetve végéről a sortörés karakter, és egyéb felesleges információk eltávolításában. Ez elengedhetetlenül fontos akkor, ha szöveges adatokkal is dolgozunk – ezért is alkalmazzuk ebben a kódrészletben is:

fajl = open("szoveg.txt", "r")
adatok = []

for sor in fajl:
adatok.append(sor.strip())

Ez a kódrészlet beolvassa a fájl sorait, és eltárolja őket az adatok nevű listában. A listák működéséről a Listák cikkünkben tudhatsz meg többet. Amennyiben az adataink további feldolgozást igényelnek, pl. táblázatos jellegűek, és a sorokat tovább kell darabolni (lásd: szövegek darabolása Split-tel), akkor ezt is könnyedén megtehetjük akár ezen a cikluson belül is.

Soronkénti beolvasás for nélkül

A fájlból sorok beolvasására for ciklus nélkül is van lehetőség. Erre a legegyszerűbb megoldás a .readline() utasítás használata, amely lehetővé teszi egy-egy sor beolvasását a fájlból. Az utasítás követi, hogy hol tartunk a fájl feldolgozásával, és mindig a következő sort adja vissza – a fájl elfogyása esetén pedig egy üres szöveggel tér vissza. Íme egy példa a readline használatára:

fajl = open("szoveg.txt", "r")

print("A fájl első sora:", fajl.readline().strip())
print("A fájl második sora:", fajl.readline().strip())

Fájl lezárása és a with kulcsszó

A fájlokat azok beolvasása után érdemes lezárni – ezzel jelezzük a számítógép felé, hogy befejeztük a fájllal való munkát. Ennek fájlok írásakor nagyobb a jelentősége, de alapvetően olvasáskor is minden esetben le kell zárni a fájlt miután végeztünk vele, még akkor is, ha itt kevésbé vezet látványos hibákhoz ha esetleg megfeledkezünk róla.

A fájlt lezárhatjuk "kézzel" is a .close() utasítással, azonban egyszerűbb és átláthatóbb, ha ehelyett a Python with szerkezetét használjuk – ez nem csak a beolvasásért felelős kód elkülönítésében segít, de automatikusan le is zárja a fájlt az utasításblokk végén, ezzel biztosítva, hogy ne feledkezzünk meg erről. Előnye továbbá, hogy a fájl lezárása így akkor is garantáltan megtörténik, ha egyébként a blokkon belüli kódunk hibára fut.

Nézzünk egy példát fájlbeolvasásra a with kontextuskezelő szerkezet használatával:

with open("szoveg.txt", "r") as fajl:
adatok = []

for sor in fajl:
adatok.append(sor.strip())

Ez a példa egy jó minta egy általános fájlbeolvasás megvalósítására.

Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9 LineFlame fejlesztőeszközével!

Példa megnyitása