testovac.sk

Práca so súbormi

Súbory sú super na uloženie stavu programu medzi jeho spusteniami - napríklad v ňom môžeme uchovávať aktuálne najlepšie zahrané skóre či leaderboard hry. Súbory tiež slúžia na archiváciu údajov a ich export pre použitie v iných programoch či na prenos po sieti... treba ich vedieť vytvárať a čítať a upravovať...

# pri praci so suborom je potrebne najprv subor otvorit
# prvy parameter je nazov suboru
# druhy je mod - k dispozicii je r,a,w,x a spevialne b,t
#  r - Read - otvori subor na citanie, ak neexistuje, hodi error
#  a - Append - k suboru bude mozne pripisovat na koniec, ak neexistuje, vytvori novy
#  w - Write - otvori subor na zapis (prepise ho), ak neexistuje, vytvori novy
#  x - Create - vytvori novy subor, hodi error ak uz existuje
# navyse si mozeme vybrat, ci otvorime subor ako textak alebo v binarnom mode
#  staci k r/a/w/x napisat aj t (text) alebo b (binary)

f1 = open("file.txt", "r")  # otvori subor file.txt na citanie
f2 = open("file2.md", "wb") # otvori subor file2.md na zapis v binarnom mode

# po praci so suborom je potrebne ho zavriet
f1.close()
f2.close()

# na zatvaranie suborov sa casto zabuda, pomoct nam moze konstrukcia with...
# takto a subor automaticky zavrie po skonceni vykonavania sekcie "with"
with open("subor.txt", "r") as file3:  
    data3 = file3.read()
    # tu pracujem so suborom
# tu je subor file3 uz zatvoreny, netreba volat close()

# nacitanie celeho suboru naraz ako string
celysubor = f1.read()

# nacitanie vsetkych riadkov naraz - readlines())
with open("file.txt", "r") as file:
    data = file.readlines() # vytvori zoznam riadkov
    for line in data:
        print(line)

# citanie riadkov postupne, zistenie konca suboru
t = open('subor.txt', 'r')
riadok = t.readline()
while riadok != '':
    print(riadok, end='')
    riadok = t.readline() # ak narazi na koniec, vrati prazdny string ''
t.close()

# citanie po riadkoch - pomocou suborovej premennej
t = open('subor.txt', 'r')
for riadok in t:
    print(riadok)
t.close()

# zapis do suboru
f.write("toto pridavam do suboru")