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

<info9>

Mintaprojekt: Induló járatok

Forrásanyagok
A mintafeladathoz tartozó forrásfájlt letöltheted itt: kotegyan.txt

A kotegyan.txt állomány Kötegyán vasútállomás induló vonatairól tartalmaz információkat. A fájl soronként egy-egy induló vonatról tartalmaz információkat - minden sorban megtalálható az indulási időpont órája, valamint perce, továbbá a járat úticélja, tabulátor karakterrel elválasztva. A fájl első néhány sora így néz ki:

4    31    Békéscsaba
5    14    Békéscsaba
5    30    Nagyszalonta
6    31    Vésztő
...

A célunk egy olyan program elkészítése, amely - az aktuális időpont felhasználásával - kiírja a következő 5 darab induló járat információit a konzolra!

Készítsük el!

import datetime # Beimportáljuk a datetime modult, hiszen szükség lesz rá az aktuális idő meghatározásához

# Ebben a listában fogjuk letárolni a rendelkezésre álló adatokat
indulasok = []

# Megnyitjuk a fájlt. A with szerkezetnek hála a fájl a beolvasás után automatikusan bezárásra kerül.
with open("kotegyan.txt", "r") as fajl:
	# Egy for ciklussal végighaladnk a fájl minden során
    for sor in fajl:
    	# A beolvasott sort szétvágjuk a tabulátor karakternél
        adatok = sor.strip().split("\t")

        # Ezt követően létrehozunk egy szótárat az adatok tárolására
        szotar = {
          "ora":  int(adatok[0]),
          "perc": int(adatok[1]),     # Az órát és a percet int-re konvertálva tároljuk
          "hova": adatok[2]           # Az állomás nevét azonban szövegként tároljuk
        }

        # Az összeállított szótárat pedig elhelyezzük a listában.
        indulasok.append(szotar)

# Lekérdezzük az aktuális időpontot
most = datetime.datetime.now()

# Meghatározzuk, hogy melyek azok a vonatok, amelyek indulási ideje már elmúlt. Ehhez egy
# ciklust használunk, amely végiglépked a vonatokon egészen addig, ameddig el nem érjük
# az utolsó olyat, amelynek az indulási ideje már elment - közben pedig ezt az információt
# egy változóban követjük.
id = 0
while id < len(indulasok) and indulasok[id]["ora"] <= most.hour and indulasok[id]["perc"] < most.minute:
  id = id + 1

# Az ID változó jelenleg az első olyan vonat sorszámát tartalmazza, amelyet ki kell írnunk. 
# Nincs más dolgunk, mint gondoskodni a következő 5 járat kiírásáról, amelyet ismét egy ciklus
# használatával valósítunk meg.
print("Hamarosan induló járatok Kötegyán állomásról:")
for i in range(5):
  if id+i < len(indulasok):
    vonat = indulasok[id + i]
    print("   ", vonat["ora"], ":",vonat["perc"], "=>", vonat["hova"])

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