2021-05-20 (G2)¶
Variablen entstehen bei der ersten Zuweisung:
[5]:
a = 666
a
[5]:
666
[6]:
d = dict()
d
[6]:
{}
[8]:
type(d)
[8]:
dict
[9]:
d = {}
d
[9]:
{}
[11]:
type(d)
[11]:
dict
Literal? Das ist ein Literal:
[14]:
d = {1:'one', 2:'two'}
d
[14]:
{1: 'one', 2: 'two'}
[16]:
l = [(1, 'one'), (2, 'two')]
d = dict(l)
d
[16]:
{1: 'one', 2: 'two'}
File I/O¶
[17]:
filename = '../Exercises/files/students.txt'
[20]:
f = open(filename)
[22]:
type(f)
[22]:
_io.TextIOWrapper
Reading File in One Big Swoop¶
[24]:
content = f.read()
content
[24]:
'1910420003;Corinna;Baumgartner\n1910420002;Anzhelika;Chernykh\n1910420005;Simon;Hu\n1910420006;Matthias;Kappel\n1810420009;Peter;Kolter\n1920420033;Jan;Kornberger\n1910420007;Luis;Kraker\n1810420010;Leonid;Kudriaschov\n1910420008;Michael;Lang\n1910420010;Sonja;Lukas\n1910420013;Behnaz;Mehrabadi\n1910420014;Leo;Moser\n1910420015;Moritz;Nagelschmied\n1910420018;Bianca;Reimer\n1910420020;Tim;Schmid\n1910420021;Lukas;Schüttler\n1910420022;Michael;Schweiger\n1910420024;Paul;Sinabell\n1910420025;Jan;Slovik\n1910420026;Daniel;Söls\n1910420027;Michael;Stangl\n1910420028;Felix;Themessl\n1920420035;Astrid;Vogel\n1810420029;Florian;Zwittnigg\n666;Jörg;Faschingbauer\n'
Hm: probably not the right way to read a 5G file
[27]:
lines = content.split('\n')
lines
[27]:
['1910420003;Corinna;Baumgartner',
'1910420002;Anzhelika;Chernykh',
'1910420005;Simon;Hu',
'1910420006;Matthias;Kappel',
'1810420009;Peter;Kolter',
'1920420033;Jan;Kornberger',
'1910420007;Luis;Kraker',
'1810420010;Leonid;Kudriaschov',
'1910420008;Michael;Lang',
'1910420010;Sonja;Lukas',
'1910420013;Behnaz;Mehrabadi',
'1910420014;Leo;Moser',
'1910420015;Moritz;Nagelschmied',
'1910420018;Bianca;Reimer',
'1910420020;Tim;Schmid',
'1910420021;Lukas;Schüttler',
'1910420022;Michael;Schweiger',
'1910420024;Paul;Sinabell',
'1910420025;Jan;Slovik',
'1910420026;Daniel;Söls',
'1910420027;Michael;Stangl',
'1910420028;Felix;Themessl',
'1920420035;Astrid;Vogel',
'1810420029;Florian;Zwittnigg',
'666;Jörg;Faschingbauer',
'']
What can be done with a list? Iterate, as always …
[29]:
for line in lines:
print(line)
1910420003;Corinna;Baumgartner
1910420002;Anzhelika;Chernykh
1910420005;Simon;Hu
1910420006;Matthias;Kappel
1810420009;Peter;Kolter
1920420033;Jan;Kornberger
1910420007;Luis;Kraker
1810420010;Leonid;Kudriaschov
1910420008;Michael;Lang
1910420010;Sonja;Lukas
1910420013;Behnaz;Mehrabadi
1910420014;Leo;Moser
1910420015;Moritz;Nagelschmied
1910420018;Bianca;Reimer
1910420020;Tim;Schmid
1910420021;Lukas;Schüttler
1910420022;Michael;Schweiger
1910420024;Paul;Sinabell
1910420025;Jan;Slovik
1910420026;Daniel;Söls
1910420027;Michael;Stangl
1910420028;Felix;Themessl
1920420035;Astrid;Vogel
1810420029;Florian;Zwittnigg
666;Jörg;Faschingbauer
Reading File in Fixed Sized Chunks¶
Rewind file (read pointer is currently at the end)
[35]:
f.seek(0)
[35]:
0
[36]:
f.read(20)
[36]:
'1910420003;Corinna;B'
[38]:
f.read(20)
[38]:
'2;Anzhelika;Chernykh'
[39]:
f.read(200)
[39]:
'\n1910420005;Simon;Hu\n1910420006;Matthias;Kappel\n1810420009;Peter;Kolter\n1920420033;Jan;Kornberger\n1910420007;Luis;Kraker\n1810420010;Leonid;Kudriaschov\n1910420008;Michael;Lang\n1910420010;Sonja;Lukas\n19'
[40]:
f.read(300)
[40]:
'10420013;Behnaz;Mehrabadi\n1910420014;Leo;Moser\n1910420015;Moritz;Nagelschmied\n1910420018;Bianca;Reimer\n1910420020;Tim;Schmid\n1910420021;Lukas;Schüttler\n1910420022;Michael;Schweiger\n1910420024;Paul;Sinabell\n1910420025;Jan;Slovik\n1910420026;Daniel;Söls\n1910420027;Michael;Stangl\n1910420028;Felix;Themes'
[41]:
f.read(30)
[41]:
'sl\n1920420035;Astrid;Vogel\n181'
[42]:
f.read(30)
[42]:
'0420029;Florian;Zwittnigg\n666;'
[43]:
f.read(30)
[43]:
'Jörg;Faschingbauer\n'
End of File (EOF)
[44]:
f.read(30) # or 1000?
[44]:
''
Reading File Line by Line¶
[46]:
f.seek(0)
[46]:
0
[47]:
f.readline()
[47]:
'1910420003;Corinna;Baumgartner\n'
Note the trailing \n
[48]:
f.readline()
[48]:
'1910420002;Anzhelika;Chernykh\n'
Skip the next 22 lines:
[49]:
for _ in range(22):
f.readline()
[50]:
f.readline()
[50]:
'666;Jörg;Faschingbauer\n'
End of File (EOF)
[51]:
f.readline()
[51]:
''
A Loop, Respecting EOF
[53]:
f.seek(0)
[53]:
0
[54]:
while True:
line = f.readline()
if len(line) == 0: # EOF
break
print(line)
1910420003;Corinna;Baumgartner
1910420002;Anzhelika;Chernykh
1910420005;Simon;Hu
1910420006;Matthias;Kappel
1810420009;Peter;Kolter
1920420033;Jan;Kornberger
1910420007;Luis;Kraker
1810420010;Leonid;Kudriaschov
1910420008;Michael;Lang
1910420010;Sonja;Lukas
1910420013;Behnaz;Mehrabadi
1910420014;Leo;Moser
1910420015;Moritz;Nagelschmied
1910420018;Bianca;Reimer
1910420020;Tim;Schmid
1910420021;Lukas;Schüttler
1910420022;Michael;Schweiger
1910420024;Paul;Sinabell
1910420025;Jan;Slovik
1910420026;Daniel;Söls
1910420027;Michael;Stangl
1910420028;Felix;Themessl
1920420035;Astrid;Vogel
1810420029;Florian;Zwittnigg
666;Jörg;Faschingbauer
Iterating a File¶
[55]:
f.seek(0)
[55]:
0
[56]:
for line in f:
print(line)
1910420003;Corinna;Baumgartner
1910420002;Anzhelika;Chernykh
1910420005;Simon;Hu
1910420006;Matthias;Kappel
1810420009;Peter;Kolter
1920420033;Jan;Kornberger
1910420007;Luis;Kraker
1810420010;Leonid;Kudriaschov
1910420008;Michael;Lang
1910420010;Sonja;Lukas
1910420013;Behnaz;Mehrabadi
1910420014;Leo;Moser
1910420015;Moritz;Nagelschmied
1910420018;Bianca;Reimer
1910420020;Tim;Schmid
1910420021;Lukas;Schüttler
1910420022;Michael;Schweiger
1910420024;Paul;Sinabell
1910420025;Jan;Slovik
1910420026;Daniel;Söls
1910420027;Michael;Stangl
1910420028;Felix;Themessl
1920420035;Astrid;Vogel
1810420029;Florian;Zwittnigg
666;Jörg;Faschingbauer
String Methods (Needed to Implement the Exercise)¶
str.strip()
, str.rstrip()
, str.lstrip()
¶
[57]:
line = '\n blah \r \t \n'
[59]:
line.strip()
[59]:
'blah'
[61]:
line.rstrip()
[61]:
'\n blah'
[63]:
line.lstrip()
[63]:
'blah \r \t \n'
[65]:
line = '666;Jörg;Faschingbauer\n'
line.rstrip('\n')
[65]:
'666;Jörg;Faschingbauer'
[68]:
line = '666;Jörg;Faschingbauer\n'
line = line.rstrip('\n')
line
[68]:
'666;Jörg;Faschingbauer'
str.split()
¶
[72]:
fields = line.split(';')
fields
[72]:
['666', 'Jörg', 'Faschingbauer']
[73]:
fields[1]
[73]:
'Jörg'