# 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!