You are on page 1of 3

Datoteke u Pythonu

- Datotečni podsustav ( file system ) – dio operacijskog sustava koji upravlja radom sa
datotekama
- U datotekama trajno spremamo informacije, a preko njih i razmjenjujemo informacije
između različitih programa
- Znakovne datoteke ( nastavak txt ) – možemo ih promatrati kao stringove
- Povezivanje Pythona sa datotekom sa kojom će raditi – funkcija open za otvaranje
datoteke
open( putanja do datoteke, način uporabe )
dat = open( 'D:\\PY\\proba.txt', 'r' )
- Načini uporabe datoteke u funkciji open:
o 'r' – datoteka se otvara za čitanje. Ako datoteka ne postoji javlja grešku
o 'w' – datoteka se otvara za pisanje. Ako postoji datoteka sa tim imenom njen
se cijeli sadržaj briše i u datoteku se upisuje novi sadržaj. Ako datoteka ne
postoji stvara se nova datoteka s navedenim imenom.
o 'a' – datoteka se otvara za dodavanje novih podataka. Postojeći sadržaj neće
se mijenjati
- Čitanje datoteke – funkcija read()
Ako unutar zagrada funkcije read stavimo neki parametar ( broj ) to će označavati
koliko bajtova čita funkcija ( 1 bajt - 1 znak )
dat = open( 'D:\\PY\\proba.txt', 'r' )
print(dat.read(3))
- Ako u nastavku gornjeg primjera napišemo
print(dat.read())
Ispisati će se i preostali dio datoteke, od 4 bajta do kraja
- Zatvaranje datoteke
Nakon prestanka uporabe datoteke moramo ju zatvoriti – funkcija close()
dat.close()
- Pisanje u datoteku – funkcija write()
dat = open( 'D:\\PY\\nova.txt', 'w' )
dat.write('Dobar dan')
dat.close()
U gornjem primjeru zapisati će se tekst Dobar dan u datoteku nova.txt. S obzirom da
datoteka ranije nije postojala ona je kreirana u mapi PY
Da smo isti tekst zapisivali u datoteku proba.txt, koju smo koristili ranije, stari sadržaj
datoteke bio bi zamijenjen novim.
- Pisanje u datoteku – funkcija write() – dodavanje podataka
dat = open( 'D:\\PY\\proba.txt', 'a' )
dat.write('\nDobar dan')
dat.close()
U gornjem primjeru postojećem smo sadržaju datoteke dodali string Dobar dan i to u
novi redak, jer smo koristili \n
- Čitanje redka u datoteci – funkcija readline()
dat = open( 'D:\\PY\\proba.txt', 'r' )
print(dat.readline())
dat.close()
Funkcija readline() čita jedan redak datoteke
- Čitanje svih redaka datoteke – funkcija readlines()
dat = open( 'D:\\PY\\proba.txt', 'r' )
print(dat.readlines())
dat.close()
Ova funkcija datoteku zapravo pretvara u listu pa bismo dobili sljedeći ispis:
['Prvi red\n', 'Drugi red\n', 'Treći red\n', 'Četvrti
red\n', 'Peti red\n', 'Dobar dan']
- Datoteku možemo jednostavno „prepisati“ u listu:
dat = open( 'D:\\PY\\proba.txt', 'r' )
lista=dat.readlines()
dat.close()
print(lista[2])
U ovom primjeru vidimo da smo datoteku prebacili u listu i zatim ispisali 2. element
liste ( treći redak datoteke jer indeksi započinju od 0 )
- Uporabom iteracije jednostavno iz liste možemo ispisati cijelu datoteku:
dat = open( 'D:\\PY\\proba.txt', 'r' )
lista=dat.readlines()
dat.close()
for redak in lista:
print(redak)
- Metoda tell() – vraća trenutni položaj pokazivača u datoteci
dat = open( 'D:\\PY\\proba.txt', 'r' )
lista=dat.readline()
print(dat.tell())
dat.close()

- Metoda seek(n) – postavlja pokazivač na poziciju n u datoteci. seek(0) postavilo bi


pokazivač na početak datoteke
- Metoda writelines() – listu elemenata smješta u datoteku
lista=['prvi', 'drugi', 'treći', 'četvrti']
dat = open( 'D:\\PY\\proba.txt', 'a' )
dat.writelines(lista)
dat.close()
Na ovakav način dobili bismo sve stringove slijepljene u istome redku datoteke:
prvidrugitrećičetvrti
Ako želimo svaki element liste ( string ) zapisati u zasebnom redku datoteke moramo
napraviti sljedeće:
lista=['prvi', 'drugi', 'treći', 'četvrti']
dat = open( 'D:\\PY\\proba.txt', 'a' )
dat.writelines(element +'\n' for element in lista)
dat.close()
Ovdje znak + označava „lijepljenje“ stringa i znaka za novi redak ( konkatenacija), a
problem smo riješili iteriranjem kroz listu.

You might also like