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'