Binærfiler versus tekstfiler

Like dokumenter
TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Testlig og binær form

TDT4105 Informasjonsteknologi, grunnkurs Eksempler

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

Datastrukturer (kap. 8)

Eksamensforelesning TDT4105

Læringsmål og pensum

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

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Bruk piazza for å få rask hjelp til alles nytte!

Læringsmål og pensum. Oversikt

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Største primtallsfaktor i tall

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4105 IT Grunnkurs Høst 2014

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

ITGK - H2010, Matlab. Repetisjon

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

Filbehandling Tekstfiler

Øvingsforelesning 9 i Python (TDT4110)

Python: Filer og unntak Gaddis: Kapittel 6

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

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

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

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

Øvingsforelesning TDT4105

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

TDT4105 Informasjonsteknologi, grunnkurs. Matlab: Søking

TDT4105 IT Grunnkurs Høst 2014

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

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

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

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

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

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

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning i Matlab TDT4105

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

Introduksjon til fagfeltet

TDT4105 Informasjonsteknologi, grunnkurs

Programmeringsspråket C Del 2

TDT4105 IT Grunnkurs Høst 2012

Læringsmål og pensum. Oppgave

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

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Fasit, Oppgave 1. 1b 2b 3a 4d 5a 6a 7c 8a 9d 10c 11a 12d 13d 14b 15c 16b 17b 18d 19c 20a. Oppgavenr A B C D. 1.1 x. 1.2 x. 1.3 x. 1.4 x. 1.5 x. 1.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

UNIVERSITETET I OSLO

Python: Filer og unntak Gaddis: Kapittel 6

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning i Matlab TDT4105

Informasjon Eksamen i IN1000 høsten 2017

Øvingsforelesning i Matlab TDT4105

Løsningsforslag for øving 9 TDT4105 IT Grunnkurs

Løse reelle problemer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Løsningsforslag til eksamen i INF1000

Oppsummering fra sist

Informasjon Prøveeksamen i IN1000 høsten 2018

Tall, vektorer og matriser

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.

INF1000: noen avsluttende ord

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

UNIVERSITETET I OSLO

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

INF1000 : Forelesning 5

TOD063 Datastrukturer og algoritmer

Dette vil pakke ut filer til mappen \Tillegg\msp2016 under Eldata sin installasjonsmappe på maskinen.

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

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

INF Uke 10. Ukesoppgaver oktober 2012

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Palindrom - iterativt

O-notasjon og kompleksitet

TDT4110 IT Grunnkurs Høst 2015

Transkript:

1 TDT4110 Informasjonsteknologi grunnkurs: Filbehandling Kunnskap for en bedre verden Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf: 735 91845 TDT4105 IT Grunnkurs 1 Uke48 Oppsummering_TR 24. november 2015 2 Binærfiler versus tekstfiler Ulemper med tekstfiler Oversetting til/fra tekstlig form Tar (vanligvis) større plass Tallet 348 tar 2 byte (int16), teksten 348 tar 6 byte (2 byte pr. tegn) Tallet 348.934 tar 8 byte (double), teksten 348.934 tar 14 byte Fordeler med tekstfiler Kan lese innholdet (så lenge filen er liten) Standardisert, kan utveksle data mellom programmer Kan skrive inn nytt eller ret innhold i en teksteditor Vi skal se på behandling av tekstfiler 2 Uke48 Oppsummering_TR 24. november 2015

3 load <filnavn> Innlasting av matriser Henter data fra fil <filnavn> til variabel <filnavn> <variabel> = load( <filnavn> ) Henter inn data fra fil til oppgitt variabel type <filnavn> Skriver ut innholdet i filen 3 Uke48 Oppsummering_TR 24. november 2015 4 vaerstat.m function [ snittt, maxt, mint ] = vaerstat( filnavn ) % Leser inn værdata, finner snitt-, min- og maxtemp vaerdata = load( filnavn ); %4 kolonner snittt = mean(vaerdata(:,4)); mint = min(vaerdata(:,4)); maxt = max(vaerdata(:,4)); 4 Uke48 Oppsummering_TR 24. november 2015

5 Lavnivå filbehandling Åpner filer (etablerer kobling til filen) <fil-id> = fopen( <filnavn>, <tilgangstype> ); minfil = fopen( data.txt, r ); data.txt fil-id er en filpeker (referanse til filen) fil-id settes til -1 ved problemer Tilgangstyper: r lese (fra starten) w skrive (sletter gammelt fil-innhold først) a legge til (skrive på slutten av filen) Lukker filen når vi er ferdig med den <status> = fclose(<fil-id>) ok = fclose(minfil); Returnerer 0 når det går bra, -1 ellers 5 Uke48 Oppsummering_TR 24. november 2015 6 Lesing/skriving fgetl(<fil-id>) Leser inn en linje data = fgetl(minfil); Returnerer en tekststreng med linjens innhold feof(<fil-id>) while ~feof(minfil) usann så lenge det er mer data igjen i filen (som ikke er lest) sann når vi har kommet til slutten av filen fprintf(<fil-id>, <formatstreng>, <verdier>) Skriver til filen med <fil-id> Som til skjerm Mange flere (spesialiserte) muligheter, se læreboka og hjelp i Matlab. data.txt eof 6 Uke48 Oppsummering_TR 24. november 2015

7 clc, clear % aapner filen fid = fopen('andeby.txt', 'r'); % sjekket at aapningen gikk bra disp('kunne ikke aapne filen') % leser alle linjene while ~feof(fid) % leser en linje fillinje = fgetl(fid); % skriver ut linjen fprintf('%s\n', fillinje) % while lesandebyfil.m lukkstatus = fclose(fid); if lukkstatus == 0 disp('lukket filen') disp('kunne ikke lukke filen') #navn:donald Duck#adresse:Andeby 1#faar:1920 #navn:dolly Duck#adresse:Andeby 2#faar:1922 #navn:anton Duck#adresse:Andeby 3#faar:1919 #navn:skrue McDuck#adresse:Bingen#faar:1890 #navn:bestemor Duck#adresse:Haugen 1#faar:1878 eof andeby.txt fillinje #navn:donald Duck#adresse:Andeby 1#faar:1920 #navn:donald Duck#adresse:Andeby 1#faar:1920 #navn:dolly Duck#adresse:Andeby 2#faar:1922 #navn:anton Duck#adresse:Andeby 3#faar:1919 #navn:skrue McDuck#adresse:Bingen#faar:1890 #navn:bestemor Duck#adresse:Haugen 1#faar:1878 eof 7 Uke48 Oppsummering_TR 24. november 2015 8 Åpne fila Standard framgangsmåte minfil = fopen( data.txt, r ); (r)ead,(w)rite,(a)pp Sjekk at fila ble åpnet disp('kunne ikke åpne filen') Fortsett så lenge det finnes data i fila while ~feof(minfil) les en linje fillinje = fgetl(minfil); behandle data i linja Lukk fila lukkstatus = fclose(minfil); 8 Uke48 Oppsummering_TR 24. november 2015

9 Andeby- database Leser inn persondata til en vektor av strukturer Personpost (struktur): Vektor av personer: 9 Uke48 Oppsummering_TR 24. november 2015 10 lesandeby.m function data = lesandeby % leser persondata fra fil til vektor fid = fopen('andeby.txt', 'r'); % aapner filen % sjekket at aapningen gikk bra exit('feil i lesandeby: Kunne ikke aapne filen') personnr = 1; % indeks i vektoren med personposter while ~feof(fid) % leser alle linjene fillinje = fgetl(fid); % leser en linje % finner #-ene fillinje #navn:donald Duck#adresse:Andeby 1#faar:1920 navnstart = 1; adressestart = strfind(fillinje, '#adresse:'); faarstart= strfind(fillinje, '#faar:'); linjelengde = length(fillinje); % finner linjelengden % plukker ut data data(personnr).navn = fillinje(7:adressestart-1); data(personnr).adresse = fillinje(adressestart+9:faarstart-1); data(personnr).faar = str2num( fillinje(faarstart+6:linjelengde) ); personnr = personnr + 1; % neste personnr % while lukkstatus = fclose(fid); if lukkstatus == 0 disp('lukket filen') disp('kunne ikke lukke filen') 10 Uke48 Oppsummering_TR 24. november 2015

11 Kjøreeksempel 11 Uke48 Oppsummering_TR 24. november 2015 12 Å legge til en person Lager funksjon som registrerer ny Andeby-person Tar person-post som inn-parameter Åpner filen for å legge til ( a ) Lager tekstlinje ut fra person-posten Skriver tekstlinje til fil fprintf(fid, '%s\n', linje); Lukker filen 12 Uke48 Oppsummering_TR 24. november 2015

13 regandebykarakter.m function regandebykarakter(karakter) % tar inn karakter og legger til i datafilen % Format er struct med 'navn', 'adresse' og 'faar'-felter fid = fopen('andeby.txt', 'a'); % åpner filen for tillegg av data % sjekket at åpningen gikk bra exit('feil i regandeby: Kunne ikke åpne filen') % setter sammen en linje linje = ['#navn:' karakter.navn]; linje = [linje '#adresse:' karakter.adresse]; linje = [linje '#faar:' num2str(karakter.faar) ]; fprintf(fid, '%s\n', linje); % lukker filer lukkstatus = fclose(fid); if lukkstatus == 0 disp('lukket filen') disp('kunne ikke lukke filen') % function 13 Uke48 Oppsummering_TR 24. november 2015 14 Kjøreeksempel 14 Uke48 Oppsummering_TR 24. november 2015