F1420 Python
content
je typu str
.
Často nájdete skrátený (a lepší) zápis:
with
je kľúčové slovo pre tzv. context manager, ktorý si “uprace po sebe”, a to aj v prípade, keď načítávanie zlyhá.
f
?Premenná f
reprezentuje súbor, ktorý je na disku.
Okrem metódy read()
je možné cez tento objekt iterovať (ale len raz!!):
Read | Write |
---|---|
content = f.read() |
f.write(content) |
open('my_file.txt') |
open('my_file.txt', 'w') |
POZOR: Pokial súbor už existuje tak ho prepíšete:
open
Reťazec 'w'
v zápise znamená write
Character | Meaning |
---|---|
‘r’ | open for reading (default) |
‘w’ | open for writing |
‘x’ | open for exclusive creation, failing if the file already exists |
‘a’ | open for writing, appending to the end of the file if it exists |
…takže, ak si nechcete prepísať existujúci súbor, tak použite 'x'
Znak v reťazci | Poznámka |
---|---|
‘\n’ | nový riadok |
‘\r\n’ | nový riadok na Windowse |
‘\r’ | návrat vozíku (nerobím si srandu) |
‘\\’ | vytvorí jednoduché opačné lomítko |
Viac o nových riadkoch napr. tu.
Pokial chcete otvoriť súbor v inom adresari, použite absolútnu alebo relatívnu cestu:
Pozor
Lomítka na Windows sú opačne.
Pracujte najlepšie v novej (prázdnej) zložke.
f_1
, v ktorom bude text “1”.for
-cyklu (alebo while
) napíšte program, ktorý počíta faktoriál a zapisuje výsledky do súborov. Pritom použite vždy výsledok, ktorý načítate z predchádzajúceho súboru.To znamená, že v súbore f_3
bude 6, v súbore f_5
bude 120, atd.
V tomto predmete budete otvárať Pythonom len textové súbory, ale pracovať s binárnymi je tiež možné.
Štandartne chcete:
Ukážeme si nástroje, pre krok 2.
str
: strip
a split
Subor cornetto_trilogy.dat:
---IMDB.com reviews---
Shaun of the Dead, 7.9
Hot Fuzz, 7.8
The World's End, 7.0
with open('cornetto_trilogy.dat') as f:
data = f.read()
# odstrani prip. prazdne riadky na zaciatku a na konci retazca
data = data.strip()
# rozdelenie po riadkoch
lines = data.splitlines()
# prvy riadok nas nezaujima
lines = lines[1:]
names = []
scores = []
for l in lines:
pair = l.split(',')
names.append(pair[0])
scores.append(float(pair[1].strip()))
split
bez argumentu:
replace
Viac o reťazcoch nájdete v dokumentácii.
“In the name of God, stop a moment, cease your work, look around you.” ― Leo Tolstoy
Pre väčšinu štruktúrovaných súborov, s ktorými sa stretnete už existuje parser.
csv
, funkcia z pandas
, read_csv
numpy.genfromtxt
, pandas.read_table
pandas.read_excel
os.path
- práca s cestami a zložkamishutil
a os
- mazanie súborov, kopírovanie, atďglob
- veľmi užitočné pokial máte viac súborov a chcete ich roztriediť podľa názvu.pathlib
- skoro vsetko nad