Delo z datotekami v pythonu

Delo z datotekami v pythonu

Avtor: Daniel Prša

Tekstovne datoteke

S programskim jezikom python lahko preprosto ustvarimo, beremo in spreminjamo tekstovne datoteke.

Če hočemo datoteko sploh odpreti, uporabimo ukaz open in ime datoteke:

   datoteka1 = open('test.txt')

V zgornjem primeru smo odprli datoteko v imeniku, kjer se program izvaja. Če datoteka z imenom test.txt ne obstaja, bo python vrnil napako.


Pri odpiranju datoteke v drugih imenikih (absolutna pot) moramo paziti, da pot do imenika pravilno zapišemo.

Lahko bi uporabljali 'navadni način', npr. c:\moji dokumenti\test.txt , ki pa zna biti problematičen, kajti za poševnico nazaj lahko python razume kot prehod v novo vrsto, tabulator in druge standardne operacije, zato je smiselno uporabljati:

"internetni" način (poševnica naprej)

   datoteka1 = open('c:/moji dokumenti/test.txt')

dvojni poševnici nazaj

   datoteka1 = open('c:\\moji dokumenti\\test.txt')


Metodi open dodajamo ponavadi še en parameter, ki nam pove, kaj želimo s to datoteko početi.

  • datoteko želimo le prebrati - 'r' :

    datotekaBranje = open('c:\\moji dokumenti\\test.txt', 'r')
  • datoteko želimo ustvariti, oz. pisati na njo -'w' :

    datotekaPisanje = open('c:\\moji dokumenti\\test1.txt', 'w')
  • obstoječi datoteki želimo dodati vsebino - 'a' :

    datotekaDodajanje = open('c:\\moji dokumenti\\test2.txt','a')

Branje vsebine datoteke

Na prejšnji strani smo odprli datoteko za branje z ukazom:

datotekaBranje = open('c:\\moji dokumenti\\test.txt', 'r')


(datoteke1.png)
vsebina datoteke test.txt

Za branje vsebine datotečne spremenljivke datotekaBranje lahko uporabimo več metod:

  • read() - prebere vso vsebino datoteke

      datotekaBranje.read()
      'To je testna datoteka.'\nTo je druga vrstica.\nTo je tretja vrstica.'
  • readline() - prebere vrstico za vrstico (kot vrstico štejemo, ko pritisnemo enter v tekstovni datoteki):

      datotekaBranje.readline()
      'To je testna datoteka.\n'

      datotekaBranje.readline()
      'To je druga vrstica.\n'

    Pri tej metodi 'kurzor' ostane na koncu vrstice in ko metodo znova pokličemo izpiše naslednjo vrstico, dokler jih ne zmanjka.

  • readlines() - vrne seznam nizov, vrstice si sledijo po indeksih:

      datotekaBranje.readline()
      ['To je testna datoteka.\n', 'To je druga vrstica.\n', 'To je tretja vrstica.']

Pisanje na datoteko

Najprej odpremo datoteko za pisanje (Pozor: če odpremo obstoječo datoteko, izbrišemo vso dotedanjo vsebino):

   datotekaPisanje = open('c:\\moji dokumenti\\test1.txt', 'w')

Za pisanje uporabimo metodo write:

   datotekaPisanje.write('To sem napisal v pythonu.')

Če želimo še kaj napisati, moramo biti pazljivi na presledek ali morebitni prehod v novo vrstico. Če napišemo še kaj, npr:

   datotekaPisanje.write('Rad bi napisal še kaj.')

bo v datoteki test1.txt sledil takšen izpis:

(datoteke2.png)
test1

Zato je potrebno dodati tudi npr. prehod v novo vrstico:

   datotekaPisanje.write('\nTo je tretja vrstica')

Ko smo končali s pisanjem, je priporočljivo datoteko zapreti. To storimo preprosto z ukazom close(). Če datoteke ne zapremo, je ne moremo npr. pogledati z drugim programom vse dokler je podatkovni tok odprt. S close() izpraznimo medpomnilnik.

Dodajanje vsebine

Kadar želimo dodajati vsebino obstoječi datoteki (stare vsebine ne želimo izbrisati) uporabimo parameter 'a'. Odprimo obstoječo datoteko test1.txt

datotekaDodajanje = open('c:\\moji dokumenti\\test1.txt','a')

Pozorni moramo biti spet na "kurzor", ta namreč ostane na koncu datoteke. Dodati moramo spet npr. prehod v novo vrstico, presledek ...

   datotekaDodajanje.write('\n\nTo sem dodal kasneje.')

(datoteke3.png)
dodajanje vsebine

V beležnici vidimo, da sem dodal dva prehoda v novo vrsto.

Zgled

0%
0%