ht15, da354a - fel- och filhantering

27
Introduktion till programmering Fel- och filhantering

Upload: anton-tibblin

Post on 20-Feb-2017

514 views

Category:

Education


3 download

TRANSCRIPT

Page 1: HT15, DA354A - Fel- och filhantering

Introduktion till programmeringFel- och filhantering

Page 2: HT15, DA354A - Fel- och filhantering

Dagens upplägg• Förbättrad felhantering• När allt inte går som planerat…• Genom try/except• Filhantering• Öppna filer• Skapa filer• Läsa/redigera/ersätta innehåll i filer• Stänga filer• Kombinerat exempel

Page 3: HT15, DA354A - Fel- och filhantering

Vad har vi gjort hittills?

Page 4: HT15, DA354A - Fel- och filhantering

Variabler If-satser Loopar

Funktioner Datatyper

Strängar Heltal Decimaltal

Boolska värden Listor Lexikon

Page 5: HT15, DA354A - Fel- och filhantering

Vi har lärt oss göra program!

Page 6: HT15, DA354A - Fel- och filhantering
Page 7: HT15, DA354A - Fel- och filhantering

Programkrascher…Ni har nog varit med om det?

Page 8: HT15, DA354A - Fel- och filhantering
Page 9: HT15, DA354A - Fel- och filhantering

När sker felen under körning?

Page 10: HT15, DA354A - Fel- och filhantering
Page 11: HT15, DA354A - Fel- och filhantering

Designa för fel.Alla gör fel, förr eller senare. Tänk användbarhet.

Page 12: HT15, DA354A - Fel- och filhantering
Page 13: HT15, DA354A - Fel- och filhantering

Ett undantag (eng. exception) är ett fel somuppstår medan ett program körs,

vilket medför att programmet abrupt stoppas (kraschar). Du kan använda try /

except för att snyggt hantera dessa fel/undantag.

Page 14: HT15, DA354A - Fel- och filhantering

Hantera fel – fel sker alltid…• I python kan man använda try för försöka utföra något• Skulle det man försöker utföra gå fel, kan man fånga upp felet

genom except

Page 15: HT15, DA354A - Fel- och filhantering

Python kan ge oss olika typer av fel• Exempel på typer av fel:• NameError: När en variabel/funktion inte finns• TypeError: När vi använder datatyper felaktivt• IndexError: Vi försöker hämta ut ett värde från en lista genom ett index som

inte finns• ZeroDivisionError: Vi försöker dividera med 0• ImportError: Vi försöker importera något som inte finns• Etc.• Fler typer av fel hittar ni här: https://

docs.python.org/2/library/exceptions.html

Page 16: HT15, DA354A - Fel- och filhantering
Page 17: HT15, DA354A - Fel- och filhantering

Generella fel vs. Specifika fel• Man kan i Python som vi sett, antingen ”upptäcka”:• Generella fel (alla fel)• Specifika fel (av en viss typ)• Ibland vill man helgradera sig mellan flera fel, t.ex.

Page 18: HT15, DA354A - Fel- och filhantering

Frågor på felhantering?Genom try / except

Page 19: HT15, DA354A - Fel- och filhantering

Demo!

Page 20: HT15, DA354A - Fel- och filhantering

Filhantering!Skapa program som kommer ihåg saker!

Page 21: HT15, DA354A - Fel- och filhantering

Att spara text i filer• Hittills har våra program varit helt nollställda när vi startat dem,

vilket ibland har fungerat bra – men det vore ju roligt om vi kunde spara information mellan olika körningar.

• Det gör man enkelt genom att spara information i textfiler. Detta t.ex. genom

• Ren text• Semikolonseparerade värden• Andra typer av strukturer, t.ex.• JSON• Pickle• XML• etc.

Page 22: HT15, DA354A - Fel- och filhantering

Att öppna filer i PythonÖppnar en fil i läsläge

Öppnar en fil i skrivläge (ersätter innehåll)

Öppnar en fil i skrivläge (lägger till innehåll)

r = read, w = write, a = append

Page 23: HT15, DA354A - Fel- och filhantering

Funktioner för filer• read() Returnerar all text i filen• readline() Returnerar en rad åt gången• readlines() Returnerar alla rader som en lista• write() Skriver till filen

Page 24: HT15, DA354A - Fel- och filhantering

Att läsa från en fil

Page 25: HT15, DA354A - Fel- och filhantering

Läsa in varje rad från en fil

Page 26: HT15, DA354A - Fel- och filhantering

close()Stänger filen när vi jobbat klart med den

Page 27: HT15, DA354A - Fel- och filhantering

Demo för filhantering