Szövegfájlok írása
Vannak olyan helyzetek, amikor a programunk által készített adatokat célszerű lenne konzolra írás helyett egy szövegfájlban letárolni, hogy azok később is elérhetőek legyenek - akár csak nézegetni, vagy akár későbbi további feldolgozásra. A Python természetesen erre is biztosít lehetőséget, szintén az open utasítás használatával.
A fájlok beolvasásakor az open második paraméterét egy r (read) betűre állítottuk. Ha azonban írni szeretnénk, ehelyett a w (write) karaktert tudjuk használni. Mivel fájlba történő íráskor a fájl lezárása elengedhetetlenül fontos, itt ia minden esetben érdemes a with kontextuskezelő szerkezethasználata:
with open("kimenet.txt", "w") as kimenet:
Ezt követően szöveges adatok kiírására két lehetőségünk is van. Használhatjuk a már megszokott print utasítást, egy extra file paraméterrel ellátva, ezzel megmondva neki, hogy a konzol helyett a fájlba szeretnénk küldeni a kiírt adatokat:
print("Ez a sor a fájlba megy.", file=kimenet)
Vagy használhatjuk a fájl write utasítását is:
kimenet.write("Ez az adat megy a fájlba.")
A write utasítás esetén fontos megjegyezni, hogy - szemben a printtel - ez nem tesz automatikusan sortörést a kiírt információ után. Ha szeretnénk, akkor ezt nekünk kell megtennünk a \n jelölő használatával:
kimenet.write("Egy sor.\n")
kimenet.write("Másik sor.")
Mindezen utasítások felhasználásával íme egy teljes példa egy lista elemeinek fájlbaírására:
szavak = ["alma", "körte", "eper", "narancs"]
with open("szavak.txt", "w") as fajl:
for szo in szavak:
print(szo, file=fajl)
Hozzáfűzés fájlokhoz
Az előbbiekben bemutatott w (write) paraméter használata esetén abban az esetben, ha a fájlban már eredetileg is volt valami tartalom, úgy a fájl eredeti tartalma íráskor elveszik, az új információ felülírja azt. Sok esetben ez épp az, amit szeretnénk - előfordulhat azonban olyan helyzet is, amikor csak hozzáfűzni szeretnénk az új információt a fájl végéhez. Jó példa lehet erre adatok logolása. Ez esetben nincs más teendőnk, mint a w karakter helyett az a (append) paramétert átadni az open függvénynek:
with open("naplo.txt", "a") as naplo:
print("Ezt a fájl végéhez fűzzük.")
Karakter kódolás
Amennyiben a programunk ékezetes karakterekkel is dolgozik, érdemes a fájlba íráskor a karakterkódolást is beállítani. Ezt a Python megpróbálja automatikusan is megtenni, azonban a legjobb, ha mi magunk megadjuk, hogy milyen kódolást szeretnénk használni, így elkerülhetjük az ebből adódó hibákat. Általában UTF-8 karakterkódolás használata javasolt, ezt az open encoding tulajdonságával állíthatjuk be a fájl megnyitásakor:
with open("kimenet.txt", "w", encoding="utf-8")
A program beállításainak, adatainak megőrzése
Amennyiben egy olyan programot készítünk, amelynek információkat kellene "megjegyeznie", erre is használhatunk fájlokat. Persze nagyobb adatmennyiség, vagy komplexebb adatszerkezetek esetén érdemes megfontolni az adatbázisok használatát, de ha csak néhány beállítást, vagy pár egyszerű szöveges adatot szeretnénk tárolni, akkor ezt nyugodtan megtehetjük egy egyszerű szövegfájlban is. Ez esetben a program elindításakor beolvashatjuk az adatokat a fájl(ok)ból, majd amikor az adatok megváltoznak, vagy amikor kilépünk a programból, akkor visszaírhatjuk az új adatokat ugyanabba a fájlba, ezzel biztosítva, hogy legközelebb már az aktuális információk álljanak rendelkezésünkre.