python-radionica/Cas8/fajlovi.py

84 lines
3.1 KiB
Python
Raw Normal View History

2023-05-01 13:30:56 +00:00
# fajlovi
# Kako manipulisemo fajlovima?
# Kako citamo fajlove?
# Kako kreiramo fajlove?
# Kako pisemo (dodajemo sadrzaj) u fajlove?
# Da bi otvorili fajl (za citanje ili pisanje) u python-u, koristimo funkciju:
# open
# argumenti za funkciju `open` su:
# - ime fajla (onog koji zelimo da otvorimo),
# - mod
# Objasnjenje za modove:
# Oni govore pajtonu sta planiramo da radimo sa tim fajlom. Neki od ponudjenih
# i najcesce koriscenih modova su:
# - "w" za pisanje, ako fajl ne postoji, kreira se novi, ako fajl postoji,
# sve u njemu se brise i onda mozemo da pisemo u taj fajl
# - "a" za pisanje, nalik na "w" samo sto mod "a" ne brise fajl nego dodaje
# - "r" za citanje
# znaci da bi otvorili neki fajl (tekstualni fajl) i njegov sadrzaj zabelezili
# u promenljivoj (tipa string) mozemo da uradimo sledece:
neki_fajl = open("tekst.txt", "r") # tekst.txt je fajl koji se nalazi u istom
# folderu kao i ovaj fajl (fajlovi.py)
sadrzaj_fajla = neki_fajl.read()
print(sadrzaj_fajla)
neki_fajl.close() # sve fajlove koje otvorimo moramo i da zatvorimo!!!
# inace rizikujemo da se desi korupcija fajla
# ako otvorimo neki fajl, i 2 puta pokusamo da procitamo njegov sadrzaj, samo
# prvi put cemo procitati taj sadrzaj; tj. citanje fajla, "konzumira" taj fajl!
# !! to ne znaci da ce fajl biti obrisan !!
fajl = open("tekst.txt", "r")
print(fajl.read())
print(fajl.read()) # ovde necemo stampati nista, zato sto je fajl vec procitan
# ako zelimo ponovo da procitamo isti fajl, moramo ga prvo
# zatvoriti pa ponovo otvoriti
fajl.close()
# druge metode (osim read()) koje mozemo koristiti su:
# - readline() koji cita jednu liniju fajla (vraca nam string)
# - readlines() koji cita sve linije fajla i vraca nam niz linija
# - write(tekst) koji upisuje zadati tekst (argument tipa string) u zeljeni fajl
# u python-u, mozemo iterirati preko fajlova (kao i sa nizovima i recnicima)
deniro_fajl = open("deniro.csv","r")
filmovi = {}
# ako pogledate fajl "deniro.csv", sastoji se od jedne linije koja opisuje redove
# fajla, a ostatak fajla su pomenuti redovi u formatu:
# vrednost, vrednost, vrednost
# !! pogledati fajl "deniro.csv" !!
fajl.readline() # da "preskocimo" prvu liniju fajla
for linija in fajl:
linija = linija.strip() # uklanjamo '\n' (znak za novi red) iz linije
# zatim delimo liniju na 3 dela (za 2 reza..), gde su delovi:
# godina kada je film objavljen, rejting filma i naslov filma
godina, rejting, naslov = linija.split(", ", 2)
filmovi[naslov] = (rejting, godina)
# sada u recniku "filmovi" koji smo definisali iznad, imamo parove
# film => (rejting, godina)
# to mozemo da iskoristimo da nadjemo npr:
# - sve filmove odredjene godine (npr. pitamo korisnika koju godinu zele, i onda
# ispisemo sve filmove od te godine, sortirane po rejtingu)
# - najbolje ocenjeno filmove
# - da vrsimo pretragu nad filmovima (npr. pitamo korisnika koji film zeli, i
# onda ispisemo godinu izlaska tog filma i njegov rejting, a ako u recniku
# nemamo taj film, onda ispisemo da nemamo trazeni film)
# ovo sve mogu biti zadaci za domaci!