TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Like dokumenter
Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Python: Filer og unntak Gaddis: Kapittel 6

Python: Filer og unntak Gaddis: Kapittel 6

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Læringsmål og pensum. if (be): else (not_to_be):

Læringsmål og pensum. v=nkiu9yen5nc

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Oppsummering fra sist

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2015

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

YouTube-kanal ITGK. Læringsmål og pensum

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

IN1140 Ekstraoppgaver uke 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Informasjon Prøveeksamen i IN1000 høsten 2018

Python: Strenger 3. utgave: Kapittel 8

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Løse reelle problemer

IN Notat om I/O i Java

Del 1 En oversikt over C-programmering

Filbehandling Tekstfiler

Kapittel 1 En oversikt over C-språket

Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning 5 Python (TDT4110)

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Repetisjon Novice Videregående Python PDF

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Løse reelle problemer

TDT4110 IT Grunnkurs Høst 2016

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning 1 Python (TDT4110)

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

TDT4110 IT Grunnkurs Høst 2014

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Øvingsforelesning 9 i Python (TDT4110)

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

TDT4105 Informasjonsteknologi, grunnkurs

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Mattespill Nybegynner Python PDF

Dagens tema: 12 gode råd for en kompilatorskriver

Informasjon Eksamen i IN1000 høsten 2017

INF Notat om I/O i Java

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Læringsmål og pensum. Designe et program

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Leksjon 3. Kontrollstrukturer

INF120: Oblig 3. Yngve Mardal Moe

Et lite oppdrag i bakgrunnen

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

UNIVERSITETET I OSLO

Shellscripting I. Innhold

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Pensum: Starting out with Python

Verdier, variabler og forms

Utførelse av programmer, metoder og synlighet av variabler i JSP

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Øvingsforelesning i Python (TDT4110)

Leksjon 3. Kontrollstrukturer

INF1000-SIKT - Notat om I/O i Java

TDT4110 IT Grunnkurs Høst 2016

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Læringsmål og pensum. Oversikt

Transkript:

1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

2 Læringsmål Mål Introduksjon til filer (som inndata og utdata) Å bruke løkker til å prosessere filer Å prosessere inndrag Unntak Pensum Starting out with Python Kapittel 7: Files and Exceptions

C H A P T E R 7 Files and Exceptions Copyright 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

4 Intro til fil input og output Kapittel 7.1

5 Introduksjon til filer som inn- og utdata For at et program skal beholde dataene fra gang til gang når du kjører det, må du lagre dem Data lagres til en fil, typisk på en harddisk Lagrede data kan tas frem og brukes senere Skrive data til : lagre data I en fil Utdatafil: en fil som data lagres til

6

7 Introduksjon til filer som inn- og utdata (forts.) Å lese data fra : prosessen med å lese data fra en fil Inndatafil: en fil det leses data fra Tre steg når et program bruker en fil Åpn filen Prosesser filen Lukk filen

9 Filtyper og -objekter Filendinger (extensions): korte tegnsekvenser som dukker opp på slutten av filnavn med et punktum foran Endingen («extension» forteller hva slags type data som er lagret i filen) NB! Dette er bare et navn Filobjekt: objekt som er tilknyttet en spesifikk fil Gir en måte for et program som de kan arbeide med filen med: filobjekter bruker en variabel som referanse

10 Filtyper og -objekter (forts.)

11 Åpne en fil Funksjonen open: brukes til å åpne filer Lager et filobjekt og assosierer det med en fil på disken Generelt format: file_object = open(filename, mode) Mode: streng som spesifiserer hvordan filen åpnes Eksempel: read-only ('r'), writing ('w') og appending ('a') Bare-les / skriv / forlenge

12 Å spesifisere en fils plassering Hvis funksjonen open får et filnavn som ikke inneholder en sti, antar den at filen ligger i samme filkatalog som programmet Hvis programmet kjører og filen er lages der, lages den i den samme filkatalogen som programmet ligger i Alternative stier og filnavn kan spesifiseres i funksjonen open sine argumenter Husk på å gi strengen prefikset 'r' når du spesifiserer alternativ sti på Windows maskiner spesielt

13 Å skrive data til fil Metode: en funksjon som tilhører et objekt Utfører operasjoner ved å bruke dette objektet Et filobjekts write-metode brukes til å skrive data til den filen: Format: file_variable.write(string) Filen skal lukkes ved å bruke filobjektets closemetode: Format: file_variable.close()

14 Å lese data fra fil Metoden read: filobjektets metode som leser hele filinnholdet til internminnet Virker bare hvis filen er åpnet for lesing Innholdet returneres som en string Metoden readline: filobjektets metode som leser en linje fra filen: Linjen returneres som en streng, inklusive '\n' Read position: angir plasseringen til det neste elementet som leses fra filen

15 Å konkatinere et linjeskift til, og fjerne det fra en streng Som regel er data som skrives til fil verdier som refereres til via variabler Ofte nødvendig å konkatinere en '\n' til data før det skrives Utføres med å bruke operatoren + i argumentet til metoden write Ofte trengs fjering av '\n' fra en streng etter den er lest fra fil: Metoden rstrip: en streng-metode som fjerner spesifikke tegn fra slutten på en streng

16 Å tilføye data til en eksisterende fil Når en fil åpnes med modusen 'w', overskrives den dersom den allerede finnes For å tilføye data til fil, bruk modusen 'a' Hvis filen eksisterer, slettes den ikke, og hvis den ikke finnes opprettes den Data skrives der hvor det nåværende innholdet til filen slutter

17 Å lese og skrive numeriske data Tall må gjøres om til strenger før de kan skrives til fil (konvertering) Funksjonen str: konverterer en verdi til streng Tall leses fra tekstfiler som strenger Må gjøres om til numeriske typer for å kunne utføre matematiske opeerasjoner Bruk funksjonene int og float for å konvertere strenger til numeriske verdier

18 Bruk av løkker til å prosessere filer Kapittel 7.2

19 Å bruke løkker til å gå gjennom filer Filer brukes ofte til å inneholde store datamengder Løkker brukes til å lese fra og skrive til filer Ofte er antallet enheter lagret i en fil ukjent Metoden readline bruker en tom streng for å signalisere at slutten på filen er nådd Du kan skrive en while-løkke med betingelsen: while line!= ''

20

21 Å bruke Pythons for-løkke til å lese linjer Python tillater programmører å skrive en for-løkke som automatisk leser linjer til fil og slutter når den når filens slutt Format: for line in file_object: statements Løkken itererer en gang over hver av filens linjer

22 Prosessere arkiv ( Records ) Kapittel 7.3

23 Å prosessere dataopptegnelser Record/Opptegnelse: samling data som beskriver én enhet Felt: et stykke data i en opptegnelse Skriv en opptegnelse til en sekvensielt aksessert fil ved å skrive feltene etter hverandre Les opptegnelser fra sekvensielt aksesserte filer ved å lese hvert felt til opptegnelsen er fullstendig

24 Å prosessere dataopptegnelser (forts.) Når man jobber med opptegnelser er det også viktig å være i stand til å: Legge til opptegnelser Vise opptegnelser Søke etter en spesifikk opptegnelse Gjøre om på opptegnelser Slette opptegnelser

25 Unntak ( Exceptions ) Kapittel 7.4

26 Exceptions / Unntak Exception: feil som skjer når et program kjører Som regel fører det fører det til at programmet stopper (kræsjer) Traceback/Sporing: feilmelding som angir informasjon angående linjene som førte til feilen Gir en indikasjon på hvilken type «exception» og litt informasjon om feilen som førte til at unntaksfeilen oppstod

27 Exceptions (forts.) Mange exceptions kan unngås ved å programmere forsiktig: Eksempel: sjekking av inndata Normal brukes enkle beslutingskonstruksjoner Noen exceptions kan likevel ikke unngås Eksempler Å prøve å konvertere ikke-numeriske strenger til integer Å prøve å åpne en fil å lese den hvis den ikke finnes

28 Exceptions (forts.) Exception handler: kode som responderer når exceptions utløses og hindrer at programmet kræsjer I Python gjøres dette med uttrykket try/except: Generelt format: try: statements except exceptionname statements Try suite: uttrykk som potensielt kan utløse en exception Handler: uttrykk som holdes i et except-avsnitt

29 Exceptions (forts.) Hvis et uttrykk i en «try suite» utløser en «exception» Exception spefiseres i en exception-setning Håndtereren som kommer rett etterpå kjøres Fortsett programmet etter try/except-uttrykket Andre «exception»-typer Programmet stopper med en «traceback»-feilmelding Hvis ingen «exceptions» utløses, hoppes håndtererene over

30 Å håndtere mange exceptions Ofte kan kode i en «try suite» utløse flere en en «exception»-type Man må da skrive en except-klausul for hver exception-type som må håndteres En except-klausul som ikke ikke angir en liste av spesifikke «exceptions» vil håndtere en hvilken som helst «exception» som utløses i den aktuelle «try suite» Bør alltid komme sist i en serie av except-klausuler

31 Å vise en «exceptions» standard feilmelding Exception-objekt: et objekt som lagres i minnet når en «exception» utløses Normalt inneholder den en standardfeilmelding som gjelder denne «exception» Kan tilordne et «exception»-objekt til en variabel i en «except»- klausul Eksempel: except ValueError as err: Kan sende «exception»-objektet til funksjonen print for å vise standardfeilmeldingen

32 Klausulen else try/except uttrykkene kan inkludere den valgfrie klausulen else, som dukker opp etter alle exceptklausulene Stilles overfor try og except-klausuler Syntaksen likner else-klausuler i beslutningsstrukturer Else suite: en blokk av uttrykk som kjøres etter uttryket i den aktuelle «try suite», bare hvis ingen «exception» er utløst Hvis en «exception» er utløst, så hoppes else-suiten over

33 Klausulen finally try/except-uttrykk kan inkludere en valgfri klausul finally, som dukker opp etter alle exceptklausulene Stilt overfor try og except klausuler Generelt format: finally: statements «Finally suite»: uttrykksblokk etter en finally klausul Kjører om en «exception» utløses eller ei Formålet er å utføre en opprenskning før avslutning

34 Hva om en «exception» ikke håndteres? To måter for å en «exception» å være ikke-håndtert: Ingen except-klausul som spesifiserer akkurat denne typen «exception» Den aktuelle «exception» utløses utenfor en «try suite» I begge tilfeller, vil en slik «exception» føre til at programmet stopper opp Python-dokumentasjonen har informasjon om «exceptions» som kan utløses av forskjellige funksjoner

35 Oppsummering Dette kapittelet dekket: Filtyper og måter å aksessere dem Filnavn og filobjekter Å skrive data til fil Å lese data fra fil og å avgjøre når man har nådd slutten på filen Å prosessere opptegnelser i en fil «Exceptions», med: «Traceback»-feilmeldinger Håndtere «exceptions»