přejít na obsah přejít na navigaci

Linux E X P R E S

Příspěvky Python 3 (8): čítanie, zápis a manipulácia so súbormi

Python 3 (8): čítanie, zápis a manipulácia so súbormi
Pavel Šimerda 27. 08. 2015, 17:52:16
Odpovědět  Odkaz 
Nemůžu si pomoct, ale příklad s přepisováním začátku textového souboru mi nedává vůbec žádný smysl. Sice to kupodivu opravdu zafunguje tak, jak je popsáno, ale jenom shodou několika v textu nevysvětlitelných okolností. Funguje to díky tomu, že je „Piaty“ napsáno špatně (bez čárky nad y) a tím získává v UTF-8 stejnou bajtovou délku jako „Prvý“.

Celá tato část článku má několik zásadních problémů.

1) Takto se textové soubory nepoužívají, není to prakticky vůbec užitečné.

2) Takto ukázaný program vytváří nesmyslná očekávání, že lze pomocí `open(..., "r+")` nahradit slovo jiným slovem. Přitom dokonce i v tomto případě to platí jen díky konkrétní délce slov a i ta je dosažena chybou v jednom ze slov.

3) Program pracuje s textovým souborem a přitom proplouvají na povrch vlastnosti binárních zápisů. Osobně si myslím, že jedna z hlavních výhod „trojky“ je, že se lze vyvarovat míchání binární a textové reprezentace dat. Tato ukázka jde ovšem přesně opačným směrem.

Mimochodem, článek neukazuje nejelegantnější metodu přístupu k textovým souborům, kterou je bezesporu prostá iterace otevřeného souboru, tedy kombinace `with` a `for`.
Štefan Uram Re: Python 3 (8): čítanie, zápis a manipulácia so súbormi
Štefan Uram 27. 08. 2015, 22:12:17
Odpovědět  Odkaz 
Vďaka za veľmi trefný komentár, ktorému nemôžem oponovať. Je to totiž pravda.
Týchto nezmyselností som si bohužiaľ bol vedomí už pri písaní článku, ktorý som však písal vo veľmi veľkých intervaloch kvôli nedostatku času a na rýchlo, keďže som sa chcel vyvarovať časovému sklzu, čo spôsobilo totálnu nekonzistnosť myslenia. Áno, pravda, môžem sa vlastne vyhovoriť na hocičo, čo mi napadne, no kvalitu článku tým už nezmením.
Ospravedlňovať sa zaň je asi takisto úplne bezpredmetné a jediné čo mi ostáva, je poučiť sa z tohto a v pokračovaní si dať na kvalite a využiteľnosti viac záležať aj na úkor času.
Python 3 (8): čítanie, zápis a manipulácia so súbormi
sarimak 8. 09. 2015, 15:50:00
Odpovědět  Odkaz 
Bylo by prosim mozne doplnit, ze pokud v open() nespecifikujeme kodovani, pouzije se locales a ne Unicode? Na Windows je to docela problem, cp1250 != utf-8.

Typicke pouziti s explicitne uvedenym kodovanim:

with open(filename, "rt", encoding="utf-8") as myfile: