Seminarska naloga - Priprava učnih gradiv

Seminarska naloga - Priprava učnih gradiv

Delo z datotekami, direktoriji in potmi v Pythonu

Avtor: Branko Šarabon

Uvod

Namen oz. cilji, ki jih želimo doseči:

  • dijak spozna osnove dela z datotekami (branje, pisanje, dodajanje),
  • dijak prepozna nalogo oz. problem, kjer je smiselna uporaba datotek,
  • dijak spozna sintakso dela z datotekami,
  • dijak zna samostojno prebrati datoteko, zna pisati vanjo oz. dodajati vsebino vanjo.

Potrebno predznanje:

  • dijak pozna osnove programiranja v Python-u.

Vodilna prosojnica

Ustvarjanje datoteke

Datoteko ustvarimo z ukazom:

  •  open (niz, 'w')

    •  primer: open ('tekst.txt', 'w')

OPOZORILO! Če datoteka z imenom tekst.txt že obstaja, bomo s tem izgubili staro vsebino.

Datoteka se ustvari v imeniku, kjer se program izvaja. Lahko tudi določimo pot, kjer se datoteka ustvari. Ta pot je lahko:

  • relativna:

    • teksti\tekst.txt
  • absolutna:

    • c:\teksti\tekst.txt
(SLIKE/pomni.jpg)

OPOZORILO! V Pythonu velja \ za poseben znak. Če ga želimo pravilno uporabiti, ga zapišemo \\

Torej: c:\\teksti\\tekst.txt

Ustvarjanje datoteke - Vaja

VAJA:

Ustvari datoteko vaja.txt v imeniku c:\pj\DN2\vaja.txt . Pozor na znak \ .

REŠITEV

(SLIKE/2.png)

Ustvarjanje datoteke

Sedaj v imeniku c:\pj\DN2 ustvarimo še datoteke vaja1.txt , vaja2.txt in vaja3.txt .

REŠITEV

(SLIKE/4.png)

Ponovno ustvarimo datoteko vaja.txt .

Kaj opazimo? Trenutno še nič, bomo preverili kasneje, ko bomo v datoteki vaja.txt imeli kaj vsebine.

Nazaj na vodilno prosojnico

Branje datoteke

Datoteko lahko tudi samo odpremo za branje. Kadar rabimo samo podatke iz datoteke za obdelavo, jo odpremo samo za branje. V tem primeru na datoteko ne moremo dopisati nove vsebine. To bi storili takole:

  • open (niz, 'r')

    • primer: open ('tekst.txt', 'r')

Najpogostejše metode, ki se uporabljajo v povezavi z branjem datotek:

  • tekst.read ()
  • tekst.readline ()
  • tekst.readlines ()

Nazaj na vodilno prosojnico Nadaljuj brez Wink-a

(SLIKE/pomni.jpg)

Stikalo 'r' torej pomeni, da bomo odprli datoteko samo za branje - read.

Metode, povezane z branjem datotek:

  • tekst.read ()

REŠITEV V WINK-U

  • tekst.readline ()

REŠITEV V WINK-U

  • tekst.readlines ()

REŠITEV V WINK-U

Metoda read(). Prikaz rešitve v Wink-u.

Nazaj na seznam Nazaj na vodilno prosojnico

Metoda readline(). Prikaz rešitve v Wink-u.

Nazaj na seznam Nazaj na vodilno prosojnico

Metoda readlines(). Prikaz rešitve v Wink-u.

Nazaj na seznam Nazaj na vodilno prosojnico

Pisanje na datoteko

Ukaz open nam datoteko ustvari ('w'). Pove pa nam tudi njeno logično oznako. Če jo shranimo v spremenljivko, jo potem v programu lahko tudi pokličemo.

  • tekst = open ('c:\\pj\\DN2\\vaja.txt', 'w')

Ukaz za pisanje:

  • write (niz)

Torej lahko na našo datoteko zapišemo takole:

  • tekst.write ('Zapisal bom nekaj vsebine.')

Če dodamo še nekaj:

  • tekst.write ('Zapisal bom še nekaj vsebine.')

V bistvu sem naredil tole:

  • tekst.write ('Zapisal bom nekaj vsebine.Zapisal bom še nekaj vsebine.')

Pisanje na datoteko

Če bi želeli izpisati vsak zapis v novo vrsto bi morali na koncu postaviti kazalko v novo vrsto --> KAKO?

NAMIG

Namig: \n

REŠITEV

(SLIKE/5.png)

Če bomo preverili datoteko vaja.txt bomo ugotovili, da je le-ta še vedno prazna. V njej ni navedenega besedila.

Če želimo v datoteki tudi dejansko imeti besedilo, to storimo z ukazom:

  • close()

Pisanje na datoteko

Program:

(SLIKE/6.png)

Tekstovna datoteka:

(SLIKE/7.png)

Pisanje na datoteko

Ponovno ustvarimo datoteko vaja.txt . Uporabimo:

tekst = open('c:\\pj\\DN2\\vaja.txt', 'w')

tekst.close()

KAJ OPAZIMO

(SLIKE/8.png)

vaja.txt je prazna, torej smo izgubili našo vsebino.

REŠITEV V WINK-U

Pisanje na datoteko. Prikaz rešitve v Wink-u.

Nazaj na vodilno prosojnico

Pisanje na datoteko

Če bi želeli obdržati vsebino in jo morebiti tudi dopolniti, bi morali uporabiti sledeči ukaz:

  • tekst = open ('c:\\pj\\DN2\\vaja.txt', 'a')

Datoteko ravno tako odpremo za pisanje. Razlika je v tem, da mora taka datoteka že obstajati. S tem ukazom se postavimo na konec datoteke in vse kar nanjo pišemo, se doda na konec.

(SLIKE/pomni.jpg)

Stikalo 'a' pomeni append, torej bomo odprli datoteko v načinu, kjer bomo dodajali vsebino.

Pisanje na datoteko

PRIMER (če bi nadaljevali pri prejšnjem primeru):

Program:

(SLIKE/9.png)

Tekstovna datoteka:

(SLIKE/10.png)

REŠITEV V WINK-U

Dodajanje besedila v datoteko. Prikaz rešitve v Wink-u.

Nazaj na vodilno prosojnico

Datoteka DA - NE

  • metoda open(datoteka, ‘w’)

    • Ustvari novo prazno datoteko. Kaj, če datoteka s tem imenom že obstaja? Izgubimo vsebino! Kako preprečimo?
  • import os
    os.path.isfile (datoteka)
    --> odgovor True/False
  • primer:

    • import os
      imeDat=input('Vnesi ime datoteke: ')
      if os.path.isfile (imeDat):
              print ('Datoteka', imeDat, 'že obstaja!')
      else:
              print ('Datoteke', imeDat, 'še ni bilo, zato sem jo ustvaril!')
              open (imeDat, 'w')

REŠITEV V WINK-U

Ali datoteka že obstaja? Prikaz rešitve v Wink-u.

Nazaj na vodilno prosojnico

Modul os

os.mkdir(path)

  • ustvari imenik
  • pot je lahko

    • relativna:

      • teksti\tekst
    • absolutna:

      • c:\teksti\tekst
  • Opozorilo:

    • V Pythonu velja \ za poseben znak. Če ga želimo pravilno uporabiti, ga zapišemo \\
  • Torej: c:\\teksti\\tekst
  • Namesto znaka \ lahko uporabimo tudi / .

Nazaj na seznam

os.rmdir(path)

  • briše prazen imenik
  • pot je lahko

    • relativna:

      • teksti\tekst
    • absolutna:

      • c:\teksti\tekst
  • Opozorilo:

    • V Pythonu velja \ za poseben znak. Če ga želimo pravilno uporabiti, ga zapišemo \\
  • Torej: c:\\teksti\\tekst
  • Namesto znaka \ lahko uporabimo tudi / .

Nazaj na seznam

os.rename(src, dst)

  • preimenuje imenik ali datoteko
  • Torej:

    • os.rename(‘tekst.txt’,’besedilo.txt’)
  • ali:

    • os.rename(‘tekst.txt’,’test/besedilo.txt’)

Nazaj na seznam

os.chdir(path)

os.getcwd()

os.listdir(path)

  • metoda vrne vsebino imenika v seznam. Elementi seznama so urejeni po abecedi.
  • Torej:

    • vsebina=os.listdir(‘c:/windows’)
  • ali:

    • vsebina=os.listdir(os.getcwd())
  • V vsebini dobimo vsebino trenutnega imenika.

Nazaj na seznam

os.remove(path)

os.path.isfile(path)

  • metoda preveri, če obstaja datoteka
  • odgovor: True/False
  • Primer:

    • if os.path.isfile (‘tekst.txt’):
           open (‘tekst.txt’, ‘a')
      else:
          open (‘tekst.txt’, 'w')

Nazaj na seznam

os.path.isdir(path)

  • metoda preveri, če obstaja imenik
  • odgovor: True/False
  • uporaba relativnih in absolutnih poti
  • Primer:

    • if os.path.isdir (‘teksti’):
           os.rename (‘teksti’, ‘besedila')
      else:
          os.mkdir (‘besedila')

Nazaj na seznam

os.path.getsize(path)

  • metoda vrne velikost datoteke
  • uporaba relativnih in absolutnih poti
  • Primer:

    • velikost = os.path.getsize (‘tekst.txt’)
  • ali:

    • velikost = os.path.getsize (‘c:/teksti/teksti.txt’)

Nazaj na seznam

os.path.dirname(path)

  • metoda vrne imeniški del imena poti
  • Primer:

    • imenik=os.path.dirname('c:/test/besedilo.txt')
    • imenik => 'c:/test'

Nazaj na seznam

Kviz

Vprašanje 1

Ustrezno poveži pojme:

os.mkdir(path)
os.rmdir(path)
os.rename(src, dst)
os.chdir(path)
os.getcwd()
os.listdir(path)
os.remove(path)
ustvari imenik
briše prazen imenik
preimenuje imenik ali datoteko
spremeni trenutni delovni imenik na path
vrne pot, kjer se trenutno nahajamo
vrne vsebino imenika v seznam
briše datoteko

Preveri

Vprašanja

Pravilno

Bravo, obvladaš zadevo.

Naprej

Napačno

Še enkrat preveri in se pouči o ukazih.

Nazaj

Vprašanje 2

Ustrezno poveži pojme:

os.path.isfile(path)
os.path.isdir(path)
os.path.getsize(path)
os.path.dirname(path)
preveri, če datoteka obstaja
preveri, če obstaja imenik
kolika je velikost datoteke
imeniški del imena poti

Preveri

Vprašanja

Pravilno

Bravo, obvladaš zadevo.

Naprej

Napačno

Še enkrat preveri in se pouči o ukazih.

Nazaj

Vprašanje 3

Imamo datoteko TRR.txt , kjer imamo shranjene vse naše transakcije na tekočem računu. Jaka je odprl našo datoteko s sledečim ukazom:

open('TRR.txt', 'w')

Kaj je storil?

odprl je datoteko za branje in pregled le-te
zbrisal vsebino datoteke

Vprašanja

Pravilno

Tako je. Uporabil je stikalo 'w' -write.

Naprej

Napačno

Še enkrat si oglej kakšno stikalo je uporabil. Kaj pomeni 'w'?

Nazaj

Vprašanje 4

S katerim ukazom bi odprli datoteko, če želimo, da se stara vsebina izbriše?

s stikalom 'a'
s stikalom 'w'
s stikalom 'r'

Vprašanja

Pravilno

Tako je. Uporabil bi stikalo 'w' - write.

Naprej

Napačno

Še enkrat si oglej kaj pomenijo posamezna stikala.

Nazaj

Vprašanje 5

S katerim znakom pri pisanju na datoteko ukažemo prehod v novo vrsto?

z znakom 'nl'
z znakom '\n'
z znakom '\p'

Vprašanja

Pravilno

Tako je, \n pomeni skok v novo vrsto.

Naprej

Napačno

Moral se boš vrniti k osnovam in pogledati pisanje posebnih znakov.

Nazaj

Vprašanje 6

Če datoteko odpremo s stavkom open('imeDat') pomeni, da smo jo odprli s stikalom:

'a'
'r'
'w'

Vprašanja

Pravilno

Tako je, če ne navedemo posebej je privzeto stikalo 'r'.

Naprej

Napačno

Če ne navedemo posebej, se datoteka odpre samo za branje, torej ...

Nazaj

Vprašanje 7

Katere ukaze uvozimo s knjižnico os ? Pravilnih je več odgovorov!

os.make.copy
os.path.isfile
os.mkdir
os.rename
os.len.file

Preveri

Vprašanja

Pravilno

Bravo uspelo ti je.

Naprej

Napačno

Nekaj si očitno spregledal. Še enkrat si oglej knjižnico os!

Nazaj

Vprašanje 8

Napiši ukaz, s katerim se premakneš v mapo 'c:\špiri\pj\seminarska' !

Preveri

Vprašanja

Pravilno

Tako je. Uporabiš lahko \\ ali / .

Naprej

Napačno

Ne bo šlo. Preveri še enkrat.

Nazaj

Vprašanje 9

Želimo preimenovati datoteko. Dopolni spodnjo kodo!

os. (stara,nova)

Preveri

Vprašanja

Pravilno

Tako je.

Naprej

Napačno

Ne bo šlo.

Nazaj

Vprašanje 10

Ukaz os.path.getcwd() vrne pot, v kateri se trenutno nahajamo!

Drži
Ne drži

Vprašanja

Pravilno

Naprej

Napačno

Nazaj

Vprašanje 11

import os
if os.path.isfile('tekst.txt'):
    open('tekst.txt', 'a')
else:
    open('tekst.txt', 'w')

Če imamo v trenutni mapi že datoteko tekst.txt in izvedemo zgornji program bomo:

izgubili vsebino datoteke
ohranili vsebino datoteke

Vprašanja

Pravilno

Tako je. Datoteko bomo odprli s stikalo 'a'.

Naprej

Napačno

Ni res. Oglej si pogoj in ugotovi, kako bomo odprli datoteko.

Nazaj

Vprašanje 12

import os
imenik=os.path.dirname('c:/test/besedilo.txt')
print(imenik)

Kakšen je izpis?

Preveri

Vprašanja

Pravilno

Tako je.

Naprej

Napačno

Ne bo šlo.

Nazaj

Vprašanje 13

import os
pot=os.getcwd()
print (pot)

Kaj izpiše zgornji program?

izpiše ime datoteke, v kateri je shranjen program
izpiše absolutni naslov, kjer se nahaja datoteka z omenjenim programom
izpiše velikost datoteke, v kateri je shranjen program

Vprašanja

Pravilno

Naprej

Napačno

Nazaj

Vprašanje 14

S katerim ukazom bi izpisali vsebino imenika?

os.listdat(path)
os.listdir(path)
os.isfile(path)
os.isdir(path)

Vprašanja

Pravilno

Tako je.

Naprej

Napačno

Preveri še enkrat ukaze.

Nazaj

Vprašanje 15

Kako bi pobrisali datoteko vaja.txt , ki se nahaja v mapi c:/moji dokumenti ?

os.delete('c:/moji dokumenti/vaja.txt')
os.remove('c:/moji dokumenti/vaja.txt')
os.isremove('c:/moji dokumenti/vaja.txt')
os.remove(c:/moji dokumenti/vaja.txt)

Vprašanja

Pravilno

Tako je.

Naprej

Napačno

Preveri še enkrat ukaze.

Nazaj

Rezultati

Kontrolna naloga

0%
0%