In- och utmatning
Programs kommunikation med "omvärlden" kallas för "Input/Output" eller, kort och gott, "IO". Med "omvärlden" menas här bl.a. den som sitter vid datorn, lokala filer på datorn och dokument på nätet.Utskrifter i konsolen: print
Allmän form
print(v1, v2, ..., vn, sep=' ', end='\n')
Parametrar:
- v1, v2, ..., vn värden som skrivs ut.
sep
anger vad som ska skilja värdena åt. Defaultvärdet är blanktecken.end
anger vad utskriften ska avslutas med. Defaultvärdet är radbyte.
Exempel
Anrop | Utskrift | Kommentar |
---|---|---|
print(11, 212, 3.5) | 11 212 3.5 | Tre värden på en rad separerade av blanktecken och med radbyte efter. |
print(11, 212, 3.5, sep=', ') | 11, 212, 3.5 | Tre värden på en rad separerade av komma och blanktecken och med radbyte efter. |
print(11, 212, sep='\n') | 11 212 | Två värden med radbyte mellan. |
print(1/7) | 0.14285714285714285 | Ingen kontroll på antalet decimaler. Se formatering för kontroll av antalet decimaler. |
print('Svaret är ', end='') print('4') | Svaret är 4 | Inget radbyte efter första print . |
Inläsning från konsolen: input
Allmän form
-
input()
Läser en rad tangentbordet och returnerar den som en sträng. -
input(prompt)
Skriver en ledtext före läsandet.
Observera att även tal returneras som strängar och måste konverteras med int
eller float
för att kunna användas i beräkningar.
Exempel
KodenLäsa och skriva filer
En fil är (i detta sammanhang) ett dokument på datorns disk. Filer har namn och är placerade någonstans i datorns filsystem. Filer används (bl a.) till att spara information mellan mer eller mindre permanent.
Man skiljer mellan text-filer och binär-filer. Textfiler innehåller huvudsakligen läsbara tecken (bokstäver, siffror, specialtecken) och har ofta en radindelning. Binära filer kan innehålla t.ex. bild eller ljud. Sådana är således inte direkt läsbara för människor utan måste tolkas av något program. Vi kommer bara behandla textfiler.
För att Python-program ska kunna skriva och/eller läsa en fil måste den öppnas. Det innebär att man kopplar ihop en Python-variabel med ett filobjekt. Man anger också om man avser läsa eller skriva filen.
Skriva en fil
Funktionenprint
som används för att skriva till terminalen kan också användas
för att skriva till filer. Detta anges med file
-parametern.
Exempel:
homeros.txt
) med följande utseende:
Du kan titta på filen genom öppna den i någon editor, exvis Notepad.
Anmärkning: Att vi valde suffixet.txt
till filnamnet är inte signifikant.
Vi hade kunnat använda t.ex. .py
, .java
eller .html
i stället
även om det skulle kunna uppfattas som märkligt för en användare av programmet.
Två andra metoder i filobjektet kan användas för att skriva till en fil:
write(str) | Skriver ett strängvärde. Ingen radindelning om strängen i sig inte innehåller radslutstecken. |
writelines(lista) | Skriver en lista med ett listelement per rad. |
Läsa en fil
Metoder för läsning:
read() | Läser hela filen och returnerar den som en sträng. |
readline() | Läser och returnerar en rad. Returnerar tom sträng ('') om alla rader lästs. |
readlines() | Läser alla rader och returnerar en lista med de lästa raderna. |
for line in filvariabeln: | Iteration över filvariabeln. Variabeln line kommer successivt innehålla alla rader i filen. |
# Läsa med read:
infil = open(filename, 'r')
print(infil.read())
infil.close()
# Läsa med readline:
infil = open(filename, 'r')
line = infil.readline()
while line != '':
print(line, end='')
line = infil.readline()
infil.close()
print()
# Läsa med readlines:
infil = open(filename, 'r')
lines = infil.readlines()
for line in lines:
print(line, end='')
infil.close()
print()
# Iteration över filvariabeln:
infil = open(filename, 'r')
for line in infil:
print(line, end='')
infil.close()
|
Natten gick hän
och det grydde till dag
och de seglade ständigt
Natten gick hän
och det grydde till dag
och de seglade ständigt
Natten gick hän
och det grydde till dag
och de seglade ständigt
Natten gick hän
och det grydde till dag
och de seglade ständigt
|
end=''
undviker vi dubbel radframmatning i utskrifterna.
Problem med åäöÅÄÖ
Tecknen i textfiler kan vara kodade enligt olika principer, exvisutf-8
, ansi
.
Läs mer på nätet, exvis här.
Om du problem med tecknen åäöåÄÖ kan detta lösas genom att specifikt öppna filen och ange att filens innehåll är kodat enligt utf-8 så här:infil = open(filename, 'r', encoding = 'utf-8')
Satsen with
Det bästa sättet att öppna filer är att använda en så kallad context manager.
Exempel:
Mer om att läsa och skriva på fil.
Problem med Mac-datorer
- Mac användare kan få problem eftersom deras textredigerare sparar automatiskt textfiler i mac-encoding och inte utf-8 varpå open(filename, 'r', encoding = 'utf-8') inte kommer funka. Studenten måste spara som utf-8 fil i sin textredigerare då för att det ska funka.
- För Mac:s med lite äldre OS som kör Thonny verkar man behöva skriva './Filname.txt' (alternativt hela sökvägen) för att öppna en fil.
Läsning från en websida
-
urllib.request
-
urlopen
-
read
,readline
,readlines