ordlistor, filhantering och ut på webben
DESCRIPTION
Ordlistor, filhantering och ut på webben. Linda Mannila 20.11.2007. Vad kan vi nu?. Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Funktioner och moduler Villkorssatsen if Looparna for och while. Denna föreläsning. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/1.jpg)
Ordlistor, filhantering och ut på webbenLinda Mannila 20.11.2007
![Page 2: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/2.jpg)
Vad kan vi nu? Primitiva datatyper
Tal, strängar, booleska värden Samlingsdatatyp
Listan Utskrift Indata Felhantering Funktioner och moduler Villkorssatsen if Looparna for och while
![Page 3: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/3.jpg)
Denna föreläsning
Ny datatyp – ordlistan (dictionary)
Modulen webbrowser Filhantering
![Page 4: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/4.jpg)
Ordlistor (dictionaries)
Samlingsdatatyp ”Nyckel-värde”-par Påminner om en vanlig ordbok
katt kissa hund koira ko lehmä
![Page 5: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/5.jpg)
Ordlistor (dictionaries) Skapar en tom ordlista:
ordlista = {}
Skapar en ordlista med ett nyckel-värde-par i.
ordlista = {’katt’:’kissa’}
![Page 6: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/6.jpg)
Skapa ordlistor Skapar en tom ordlista:
ordlista = {}
Skapar en ordlista med ett nyckel-värde-par i.
ordlista = {’katt’:’kissa’}
NyckelVärde
![Page 7: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/7.jpg)
Nycklar och värden
Får endast finnas en nyckel med samma namn i en ordlista
ordlista = {’katt’ : ’kissa’,
’katt’ : ’misu’}
![Page 8: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/8.jpg)
Nycklar och värden
Får endast finnas en nyckel med samma namn i en ordlista
ordlista = {’katt’ : ’kissa’,
’katt’ : ’misu’}
FEL! katt får ej finnas som nyckel flera gånger i samma ordlista
![Page 9: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/9.jpg)
Lägga till i en ordlista Sätter till ett nytt par i ordlistan
ordlistan[nynyckel] = nyttvärde
>>> ordlista = {'katt' : 'kissa'}>>> ordlista{'katt': 'kissa'}
>>> ordlista['hund'] = 'koira'>>> ordlista{'hund': 'koira', 'katt': 'kissa'}
![Page 10: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/10.jpg)
Lägga till i en ordlista Om nyckeln redan finns ersätts det
gamla värdet med det nya
>>> ordlista{'hund': 'koira', 'katt': 'kissa'}
>>> ordlista['katt'] = 'misu'>>> ordlista{'hund': 'koira', 'katt': 'misu'}
![Page 11: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/11.jpg)
Funktioner på ordlistor
Ta bort nyckel-värde-par: del Funktionen del tar bort ett
nyckel-värde-par ur ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> del(ordlista['hund'])>>> ordlista{'katt': 'misu'}
![Page 12: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/12.jpg)
Funktionen len berättar hur många nyckel-värde-par som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> len(ordlista) 2
Funktioner på ordlistor
Antalet par i en ordlista: len
![Page 13: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/13.jpg)
Exempel
sve_eng = {'röd' : 'red',
'blå' : 'blue',
'grön': 'green',
'gul' : 'yellow'}
print "%-9s %-9s" % ("Svenska", "Engelska")
print "------------------"
for ord in sve_eng:
print "%-9s %-9s" % (ord, sve_eng [ord])
Provkörning:Svenska Engelska ------------------blå blue gul yellow grön green röd red
![Page 14: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/14.jpg)
Ordlistmetoder
keys()keys() returnerar en lista
över vilka nycklar som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> ordlista.keys()['hund', 'katt']
![Page 15: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/15.jpg)
Ordlistmetoder
values()
values() returnerar en lista över vilka värden som finns i ordlistan
>>> ordlista{'hund': 'koira', 'katt': 'misu'}
>>> ordlista.values()['koira', 'misu']
![Page 16: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/16.jpg)
Övriga ordlistmetoder
http://docs.python.org/lib/typesmapping.html
![Page 17: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/17.jpg)
Ordlistor för menyer
Ordlistor är bra för att hantera menyer i program, t.ex.
O open file
P print file
Q quit
Make your choice:
![Page 18: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/18.jpg)
Menyexempelmeny = {'H' : 'Skriv ut en hälsning',
'X': 'Avsluta' }
while True:
for val in meny:
print val + "\t" + meny[val]
svar = raw_input(‘\nVad vill du göra? ')
if svar == 'H' or svar == 'h':
print “\nHallå hallå hallå!\n"
elif svar == 'X' or svar == 'x':
print “\nDu vill alltså sluta. OK!"
break
Provkörning
H Skriv ut en hälsningX Avsluta
Vad vill du göra? h
Hallå hallå hallå!
H Skriv ut en hälsningX Avsluta
Vad vill du göra? r
H Skriv ut en hälsningX Avsluta
Vad vill du göra? x
Du vill alltså sluta. OK!
![Page 19: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/19.jpg)
Ny modul: webbrowserhttp://docs.python.org/lib/module-webbrowser.html
>>> import webbrowser
>>> dir(webbrowser)['BackgroundBrowser', 'BaseBrowser', 'Elinks', 'Error', 'Galeon', 'GenericBrowser', 'Grail', 'Konqueror', 'Mozilla', 'Netscape', 'Opera', 'UnixBrowser', 'WindowsDefault', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_browsers', '_iscommand', '_isexecutable', '_synthesize', '_tryorder', 'browser', 'get', 'main', 'open', 'open_new', 'open_new_tab', 'os', 'register', 'register_X_browsers', 'shlex', 'stat', 'subprocess', 'sys', 'time']
![Page 20: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/20.jpg)
Ny modul: webbrowser
De olika versionerna av funktionen open (open, open_new, open_new_tab) öppnar webbsidor i browsern
Webbadressen som argument
import webbrowserwebbrowser.open('http://www.abo.fi')
![Page 21: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/21.jpg)
Webbrowserexempelimport webbrowser
sida = raw_input('Vilken sida vill du öppna? ')
webbrowser.open('http://' + sida)
Användaren behöver inte själv skriva in http://, utan det räcker med t.ex. www.abo.fi.
Programmet lägger automatiskt till http://
![Page 22: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/22.jpg)
webboppnare.pyimport webbrowser
def skriv_meny(): print "Python på webben"
meny = {"A" : "http://www.python.org", "B" : "http://www.abo.fi/~linda.mannila/proggk07"} print
for i in meny.keys(): print "%s : %s" % (i, meny[i])
val = raw_input("Vilken sida vill du öppna? ") return meny[val]
def main(): sida = skriv_meny() webbrowser.open(sida)
main()
![Page 23: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/23.jpg)
Filhantering
Hittills: All input via tangentbordet All output till skärmen
Nu filer Hämta data ur en fil Lagra data i en fil
![Page 24: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/24.jpg)
Filer
För att kunna göra något med en fil måste man först öppna den för läsning för skrivning
![Page 25: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/25.jpg)
Att läsa från en fil Öppna för läsning
infil = open(filnamn, ’r’)
Läs filens innehålldata = infil.read()
Läs en rad i tagetfor rad in infil: kod som gör något med raden
![Page 26: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/26.jpg)
Att skriva till en fil Öppna för skrivning
utfil = open(filnamn, ’w’)
Skriv en sträng till filenutfil.write(sträng)
OBS! Om filen inte finns skapas den Om den finns skrivs allt gammalt innehåll över! För att skriva sist i en fil: använd ’a’ (append) i
stället för ’w’
![Page 27: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/27.jpg)
Kom ihåg!
Att stänga filer Då man öppnar en fil (oberoende
av i vilket läge r/w/a) öppnar man kontakten till filen samtidigt låses filen så att inget
annat program kan komma åt det För att frigöra filen igen måste
man stänga kontakten Öppna: infil = open(filnamn, ’r’) Stäng: infil.close()
![Page 28: Ordlistor, filhantering och ut på webben](https://reader035.vdocuments.mx/reader035/viewer/2022062803/568147c0550346895db502b2/html5/thumbnails/28.jpg)
Gardera mot fel Fel att försöka öppna en fil som
inte finns IOError
Fel att försöka läsa från en fil som man redan läst allt ur EOFError
Oberoende av fel hantera dem try - except