PYTHON - Uvod v delo z datotekami

PYTHON - Uvod v delo z datotekami

Avtor: Saša Kožuh

Učni cilji: Ustvarjanje, odpiranje, spreminjanje in branje datotek.

Uvod

V progrmaskem jeziku Python se lahko, tako kot v marsikaterem drugem, dela z datotekami. Datoteke lahko beremo, ustvarjamo, pišemo vanje, brišemo ipd.

Preden se lotimo dela z datotekami je potrebno razjasniti pojem poti. Pot do datoteke je lahko navedena absolutno ali relativno. Na prvi pogled precej zapleteno, pa vendarle ni tako.

Večina računalniških uporabnikov uporablja operacijski sistem windows, zato bodo primeri zapisani za ta operacijski sistem. Tisti, ki uporabljajo kaj drugega pa po vsej verjetnosti tudi ne bodo imeli večjih težav.

Absolutna pot

Absolutna pot do datoteke je navedena kot celotna pot od samega začetka - črke pogona. To pot najdemo zapisano v datotečnem raziskovalcu v naslovnem okencu. Pri Windows 7 ni takoj vidna, vendar če kliknemo v to okence se ravno tako izpiše.

Navedba absolutne poti se začne s črko pogona, nato s prvo mapo, podmapo vse tja do mesta datoteke. Navedba se konča z imenom datoteke. Med vsemi navedbami imamo vedno zapisan znak \. Primer:
d:\mojiDokumenti\špiri\pj\2dn\datoteke.txt

Relativna pot

Relativna pot do datoteke se navaja od mesta kjer se trenutno že nahajamo. V kontekstu programiranja bo to največkrat mesto, kjer je shranjena programska datoteka. Recimo, da imamo v mapi pj shranjeno datoteko s programsko kodo, želimo pa dostopati do datoteke datoteke.txt v mapi 2dn bi to izgledalo takole:
2dn\datoteke.txt

? Kako pa doatopati do datoteke, ki je v mapi višje od trenutne mape, želimo pa uporabiti relativno pot?

Odgovor

Odgovor

Uporabiti moramo dve piki. Primer:
..\datoteke.txt
V tem primeru bomo v eno višji mapi iskali datoteke.txt

Razred os

Za delo z datotekami je v pythonu napisan razred os, ki ga moramo preden karkoli počnemo, uvoziti.

Razred os ima kar nekaj metod, ki bodo za nas zanimive:

  1. open
  2. close
  3. write
  4. read
  5. readline
  6. ...

Vsebuje tudi podrazred path.

Open

Metodo open uporabimo z imenom datoteke in argumentom, ki nam pove kaj želimo s to datoteko početi.

open("ime datoteke",argument)

Argumenti so trije:

  1. "w" - write (za pisanje v datoteko ali njeno ustvarjanje)
  2. "a" - append (za dodajanje vsebine na konec datoteke)
  3. "r" - read (za branje vsebine datoteke)

    Zgled

    import os
    open("podatki.txt","w")

    Tako odpremo datoteko za pisanje.

    POZOR!! Če datoteka z navedenim imenom že obstaja, potem bo njena vsebina s takšnim ukazom, kjer smo uporabili argument "w" izgubljena! Pri ostalih dveh argumentih to opozorilo ne velja.

Close

Potem, ko neko datoteko odpremo, jo je po končanem delu z njo (pisanju, branju, ...) potrebno tudi zapreti.

To napravimo z metodo close, ki pa ne potrebuje nobenega argumenta.

Zgled

import os
mojaDatoteka = open("moja.txt","w")
.
.
.
mojaDatoteka.close()

Write

Ko imamo datoteko odprto, bodisi za pisanje ali dodajanje, lahko z metodo "write()" vanjo tudi pišemo ali dopisujemo.

Zgled

import os
mojaDatoteka = open("podatki.txt","w");
mojaDatoteka.write("Danes je lep sončen dan");
mojaDatoteka.close();


POZOR! Kazalec, kjer pišemo s tem ostane na koncu vrstice in ne skoči v novo. Za pisanje v datoteke lahko uporabimo enak znak za prehod v novo vrsto kot pri izpisovanju na zaslon.

/n

Zgled

import os
mojaDatoteka = open("podatki.txt","w");
mojaDatoteka.write("Danes je lep sončen dan /n");
mojaDatoteka.close();


POMEMBNO! Popolnoma enako se metoda "write()" uporabja, če želimo dodajati v datoteko in jo odpremo v "a" (append) načinu. Edina razlika je v tem da sprva nismo na začetku datoteke vendar na njenem koncu.

Readln

Metoda "readln()" je namenjena branju podatkov iz datoteke. Datoteka mora biti odprta v "r" (read) načinu. Metoda prebere celotno vrstico v kateri se nahajamo.

Zgled

import os
mojaDatoteka = open("podatki.txt","r");
trenutnaVrstica = mojaDatoteka.readln();
print(trenutnaVrstica);
mojaDatoteka.close();


POMEMBNO! Metoda "readln()" prebere tudi posebne znake, kot je na primer znak za prehod v novo vrstico, ki jih popolnoma enako razume tudi ukaz "print" s katerim vsebino zapišemo na zaslon ali metoda "write" s katero vsebno zapišemo v kakšno drugo datoteko.

Read

Metoda "read()" je zelo podobna prejšnji metodi "readln()", le da ne prebere le ene (trenutne) vrstice temveč celotno datoteko do konca od mesta kjer se nahajamo.
Tako lahko z metodo "read()" zelo enostavno izpišemo celotno vsebino datoteke.

Zgled

import os
mojaDatoteka = open("podatki.txt","r");
celotnaDatoteka = mojaDatoteka.read();
print(celotnaDatoteka);
mojaDatoteka.close();


POMEMBNO! Ker ravno tako kot "readln()" tudi ta metoda za branje prebere znake za prehod v novo vrstico, bo vsebina izpisane datoteke na zaslon z vsemi vrsticami kot je zapisana v datoteki.

Zgled

Sedaj smo se naučili resnično osnove dela z datotekami. Poizkusite sami rešiti zgled. Reševnje zgleda je prikazano v spodnjem filmčku.

Zgled: Sestavi program, ki od uporabnika zahteva ime dveh datotek. Program naj napravi kopijo vsebine prve datoteke v drugo datoteko.

0%
0%