Portál AbcLinuxu, 26. dubna 2024 14:55


Dotaz: Kopírování souborů v pythonu

2.9.2010 20:39 Marek
Kopírování souborů v pythonu
Přečteno: 945×
Odpovědět | Admin
Ahoj, může mi někdo prosim říct, proč když spustim tento skriptík:

f=open("zdroj.flv", "r") obsah=f.read() f2=file("cil.flv", "a") f2.write(obsah)

tak soubor cil.flv neodpovídá tomu zdrojovymu? (Je o kilobyte menší a vyhazuje to jinej md5sum ) Dík

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.9.2010 20:51 BubakB
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neznám pro Vaši otázku odpověď, ale mohu Vám jen říci, že pro kopírování souborů v pythonu používám shutil.
2.9.2010 21:03 Marek
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Dík za reakci, mě nejde ani tak o samotný kopírování, spíš mě zajímá, proč se python takhle chová, proč při tomhle postupu dojde k vytvoření de facto odlišného souboru.
2.9.2010 21:00 chrono
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skús zmeniť módy na "rb" a "ab" (inak sa môžu meniť znaky označujúce konce riadkov).
2.9.2010 21:07 Marek
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Zkusil sem to, dělá to to samí )-:
2.9.2010 21:18 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemůžete narážet na tohle z dokumentace standardní knihovny: "Also note that when in non-blocking mode, less data than was requested may be returned, even if no size parameter was given."

Jinými slovy, zkuste možná číst/psát ve smyčce, dokud nepotkáte EOF.
http://prirucka.ujc.cas.cz/?ref=785&id=790.
3.9.2010 12:11 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Nízkoúrovňové implementace čtení souborů ve většině jazyků funguje tak, že načtou maximálně požadované množství dat, ale mohou načíst míň – a je potřeba načítání v cyklu opakovat tak dlouho, dokud nedojdete na konec souboru nebo nenačtete požadované množství dat.
2.9.2010 23:15 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, začal bych asi tím, že bych si použitím hexdump, diff a ascii(7) nejprve ověřil, že je rozdíl opravdu v nějakém symbolu konce řádku a následně začal hledat v dokumentaci, proč tomu tak je.
2.9.2010 23:54 jekub
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
a nezapisuje neco do "zdroj" mezi provedenim read a write?
3.9.2010 11:42 MikeP
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předpokládám, že porovnání ukáže, že jsou změněné znaky CR+LF za CR. Problém je ve funkci open. Standartně otevírá soubor v textovém modu což pro flv je pitomost :-). Je potřeba připsat mode 'b' do fce open.
6.9.2010 10:33 Venca
Rozbalit Rozbalit vše Re: Kopírování souborů v pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkusil bych taky f2.close()

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.