Skip to content
Snippets Groups Projects
Commit 2c4ff531 authored by Majid Rouhani's avatar Majid Rouhani
Browse files

upd

parent 5b975300
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Generelt om filbehandling # Generelt om filbehandling
**Læringsmål:** **Læringsmål:**
- Filbehandling - Filbehandling
- Betingelser
- Løkker
I denne oppgaven skal vi skrive til en fil og lese fra en fil. I denne oppgaven skal vi skrive til en fil og lese fra en fil.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Generelt om filer ## Generelt om filer
Det kan være lurt å lese dette før du går videre Det kan være lurt å lese dette før du går videre
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Det er ofte nyttig å kunne lagre data til en fil, eller lese data fra en fil når man skriver et program i Python. De mest brukte funksjonene er for åpning, redigering og lukking av eksterne filer. Det er ofte nyttig å kunne lagre data til en fil, eller lese data fra en fil når man skriver et program i Python. De mest brukte funksjonene er for åpning, redigering og lukking av eksterne filer.
Når du åpner filen må du spesifisere hvordan du skal bruke filen. Det er derfor viktig å åpne filen på riktig måte. Måten dette gjøres på er som inn-parameter i `open()`-funksjonen, noen eksempler er: Når du åpner filen må du spesifisere hvordan du skal bruke filen. Det er derfor viktig å åpne filen på riktig måte. Måten dette gjøres på er som inn-parameter i `open()`-funksjonen, noen eksempler er:
- **'r'** - for lesing av filen (default) - **'r'** - for lesing av filen (default)
- **'w'** - for skriving til filen - **'w'** - for skriving til filen
- **'a'** - for å legge til data (**a**ppend) til den eksisterende filen - **'a'** - for å legge til data (**a**ppend) til den eksisterende filen
I denne oppgaven skal vi bli bedre kjent med hvordan dette fungerer: I denne oppgaven skal vi bli bedre kjent med hvordan dette fungerer:
- For å åpne en fil i Python kan vi skrive: `f = open('filename', Bruksmåte)`. Bruksmåte er enten `'r'`, `'w'` eller `'a'` avhengig av hva hvordan filen skal brukes. - For å åpne en fil i Python kan vi skrive: `f = open('filename', Bruksmåte)`. Bruksmåte er enten `'r'`, `'w'` eller `'a'` avhengig av hva hvordan filen skal brukes.
- For å lese data fra en fil kan vi bruke: `innhold = f.read()` - For å lese data fra en fil kan vi bruke: `innhold = f.read()`
- For å legge til data til en fil kan vi skrive: `f.write(data)` - For å legge til data til en fil kan vi skrive: `f.write(data)`
Filer lukkes på følgende måte: `f.close()` Filer lukkes på følgende måte: `f.close()`
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Lesing av fil ### Lesing av fil
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Eksempelet under viser lesing av en fil. **Kjør koden under og test det ut da vel!** Eksempelet under viser lesing av en fil. **Kjør koden under og test det ut da vel!**
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# LESING AV FIL # LESING AV FIL
f = open('example_file1.txt','r') #r spesifiserer at man skal lese fra en fil f = open('example_file1.txt','r') #r spesifiserer at man skal lese fra en fil
innhold = f.read() innhold = f.read()
print(innhold) print(innhold)
f.close() f.close()
``` ```
%% Output %% Output
Dette er en eksempelfil. Dette er en eksempelfil.
Her kan man skrive hva man vil. Her kan man skrive hva man vil.
Men helst ikke for mange hatefulle ytringer. Men helst ikke for mange hatefulle ytringer.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Når man leser en fil slik som over, må man lagre innholdet i en variabel (her bruker vi `innhold`). **Husk alltid å lukke filen!** Når man leser en fil slik som over, må man lagre innholdet i en variabel (her bruker vi `innhold`). **Husk alltid å lukke filen!**
Den filen som ble lest fra finner dere her: [example_file1.txt](example_file1.txt). Prøv å endre på filen, lagre den med `file -> save` i toppmenyen for så å kjøre kodeblokken over på nytt. Kodeblokken burde da skrive ut det nye innholdet i filen! Den filen som ble lest fra finner dere her: [example_file1.txt](example_file1.txt). Prøv å endre på filen, lagre den med `file -> save` i toppmenyen for så å kjøre kodeblokken over på nytt. Kodeblokken burde da skrive ut det nye innholdet i filen!
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Skriving av fil ### Skriving av fil
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
For å skrive til en fil kan man gjøre slik som under. **Kjør koden under og test!** For å skrive til en fil kan man gjøre slik som under. **Kjør koden under og test!**
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
f = open('example_file1.txt','w') #w spesifiserer at filen skal skrives til f = open('example_file1.txt','w') #w spesifiserer at filen skal skrives til
f.write('En hatefull ytring') f.write('En hatefull ytring')
f.close() f.close()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Etter at du har kjørt koden over vil du kunne se at innholdet i [example_file1.txt](example_file1.txt) har endret seg. Hvis du vil kan du bytte ut `'w'` over med `'a'` og se hva som da skjer. Etter at du har kjørt koden over vil du kunne se at innholdet i [example_file1.txt](example_file1.txt) har endret seg. Hvis du vil kan du bytte ut `'w'` over med `'a'` og se hva som da skjer.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Context managers ### Context managers
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Det er generelt foretrukket i python å bruke _context managers_ når man gjør operasjoner som å skrive til og lese fra fil. De tar hånd om lukking av fila når du er ferdig, og passer på å lukke også dersom koden crasher underveis i en operasjon. Da kan vi være trygge på at vi ikke får korrupte filer. Det er generelt foretrukket i python å bruke _context managers_ når man gjør operasjoner som å skrive til og lese fra fil. De tar hånd om lukking av fila når du er ferdig, og passer på å lukke også dersom koden crasher underveis i en operasjon. Da kan vi være trygge på at vi ikke får korrupte filer.
Åpning og lukking av filer med context managere gjøres som følger Åpning og lukking av filer med context managere gjøres som følger
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
with open('example_file.txt', 'w') as writefile: with open('example_file.txt', 'w') as writefile:
writefile.write("En hyggelig kommentar") writefile.write("En hyggelig kommentar")
with open('example_file.txt', 'r') as readfile: with open('example_file.txt', 'r') as readfile:
innhold = readfile.read() innhold = readfile.read()
print(innhold) print(innhold)
``` ```
%% Output %% Output
En hyggelig kommentar En hyggelig kommentar
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Man kan også åpne og lukke flere filer i gangen Man kan også åpne og lukke flere filer i gangen
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
with open('example_file.txt', 'r') as file_0, open('example_file1.txt', 'r') as file_1: with open('example_file.txt', 'r') as file_0, open('example_file1.txt', 'r') as file_1:
innhold_0 = file_0.read() innhold_0 = file_0.read()
innhold_1 = file_1.read() innhold_1 = file_1.read()
print(innhold_0, innhold_1, sep="\n---\n") print(innhold_0, innhold_1, sep="\n---\n")
``` ```
%% Output %% Output
En hyggelig kommentar En hyggelig kommentar
--- ---
Dette er en eksempelfil. Dette er en eksempelfil.
Her kan man skrive hva man vil. Her kan man skrive hva man vil.
Men helst ikke for mange hatefulle ytringer. Men helst ikke for mange hatefulle ytringer.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment