Re: [python] zapis na zacatek souboru
Jako puvodce dotazu bych byl taky rad kdyby se dohadovani udelalo pritrz. Bylo mi porazeno a dohadovani ve zbylich dnech jiz bylo zbytecne. Jsme preci rozumni lide Vepro Sakra lidi, co tady furt resite? Ja myslel, ze je to tady konfera o radach a ne o dohadovani :-( Takze to shrneme, mas 2 moznosti: 1. nacist si obsah souboru do pameti, metodou write zapsat do souboru nova data+data z pameti 2. prejmenovat soubor, a zapsat do souboru nova data + data z prejmenovaneho souboru To jsou rady k polozenemu dotazu, osobne se priklanim k prvni variante. Pokud je ovsem dat hodne, doporucuji pouzit nejakou DB, urcite postaci SQLite. Pokud se jedna o citliva, pripadne dulezita data opet doporucuji pouzit DB, pak cloveka nezaskoci ani vypadek proudu. Pokud ale nepracujes s nijak dulezitymi daty, nepotrebujes zalohovani, atd, atd. doporucuji pouzit 1. zminovanou variantu. HOWK Tomas Dne 10.9.2008 12:18, Petr Zlamal napsal(a): Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) f.write(slovo) f.close() f=open(file.txt,a) f.tell() 5L f.seek(0) f.tell() 0L f.write(slovo2) f.close() Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil cyklem, ktery vytvori novy soubor, ulozi retezec na zacatek a pote prekopiruje obsah puvodniho souboru. Zda se mi to jako neefektivni reseni, zna a poradi nekdo neco elegatnejsiho? Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Sakra lidi, co tady furt resite? Ja myslel, ze je to tady konfera o radach a ne o dohadovani :-( Takze to shrneme, mas 2 moznosti: 1. nacist si obsah souboru do pameti, metodou write zapsat do souboru nova data+data z pameti 2. prejmenovat soubor, a zapsat do souboru nova data + data z prejmenovaneho souboru To jsou rady k polozenemu dotazu, osobne se priklanim k prvni variante. Pokud je ovsem dat hodne, doporucuji pouzit nejakou DB, urcite postaci SQLite. Pokud se jedna o citliva, pripadne dulezita data opet doporucuji pouzit DB, pak cloveka nezaskoci ani vypadek proudu. Pokud ale nepracujes s nijak dulezitymi daty, nepotrebujes zalohovani, atd, atd. doporucuji pouzit 1. zminovanou variantu. HOWK Tomas Dne 10.9.2008 12:18, Petr Zlamal napsal(a): Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) f.write(slovo) f.close() f=open(file.txt,a) f.tell() 5L f.seek(0) f.tell() 0L f.write(slovo2) f.close() Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil cyklem, ktery vytvori novy soubor, ulozi retezec na zacatek a pote prekopiruje obsah puvodniho souboru. Zda se mi to jako neefektivni reseni, zna a poradi nekdo neco elegatnejsiho? Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
ano, a dělat si proto bordel na disku :P navíc mam notebook takže problém s elektřinou odpadá :) a pokud jde o ztrátu dat tak bych teda radši dělal zálohy... Původní zpráva Od: azurIt [EMAIL PROTECTED] Předmět: Re: [python] zapis na zacatek souboru Datum: 12.9.2008 20:58:29 v kazdom pripade treba pouzit 2 subory: co keby v tvojom pripade napr. vyplo elektrinu ihned po tomto riadku: file = open(soubor,w) mal by si po datach :) -Pôvodná správa- Od: [mailto:[EMAIL PROTECTED] Komu: Konference PyCZ python@py.cz Predmet: Re: [python] zapis na zacatek souboru a co treba takto: file = open(soubor,r) data = file.read() file.close() data = tvojeData + data file = open(soubor,w) data = file.write(data) file.close() ###konec Pokud vím tak tvoje metoda by byla jenom naprosto zbytečná protože bys to musel udělat s modem a místo w ;) asi takhle: newfile = open( 'newfile', 'a') oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() ### ale stejně by si musel použít dva místo jednoho souboru :( Původní zpráva Od: Petr Nesladek [EMAIL PROTECTED] Předmět: Re: [python] zapis na zacatek souboru Datum: 12.9.2008 08:27:22 Asi nejjednodussi - nazorne takto : newfile = open( 'newfie', 'w') newfile.write( Neco na zacatek souboru.\n) oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() - lepe to neznam - ale rad se priucim Petr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
a co treba takto: file = open(soubor,r) data = file.read() file.close() data = tvojeData + data file = open(soubor,w) data = file.write(data) file.close() ###konec Pokud vím tak tvoje metoda by byla jenom naprosto zbytečná protože bys to musel udělat s modem a místo w ;) asi takhle: newfile = open( 'newfile', 'a') oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() ### ale stejně by si musel použít dva místo jednoho souboru :( Původní zpráva Od: Petr Nesladek [EMAIL PROTECTED] Předmět: Re: [python] zapis na zacatek souboru Datum: 12.9.2008 08:27:22 Asi nejjednodussi - nazorne takto : newfile = open( 'newfie', 'w') newfile.write( Neco na zacatek souboru.\n) oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() - lepe to neznam - ale rad se priucim Petr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
v kazdom pripade treba pouzit 2 subory: co keby v tvojom pripade napr. vyplo elektrinu ihned po tomto riadku: file = open(soubor,w) mal by si po datach :) -Pôvodná správa- Od: [mailto:[EMAIL PROTECTED] Komu: Konference PyCZ python@py.cz Predmet: Re: [python] zapis na zacatek souboru a co treba takto: file = open(soubor,r) data = file.read() file.close() data = tvojeData + data file = open(soubor,w) data = file.write(data) file.close() ###konec Pokud vím tak tvoje metoda by byla jenom naprosto zbytečná protože bys to musel udělat s modem a místo w ;) asi takhle: newfile = open( 'newfile', 'a') oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() ### ale stejně by si musel použít dva místo jednoho souboru :( Původní zpráva Od: Petr Nesladek [EMAIL PROTECTED] Předmět: Re: [python] zapis na zacatek souboru Datum: 12.9.2008 08:27:22 Asi nejjednodussi - nazorne takto : newfile = open( 'newfie', 'w') newfile.write( Neco na zacatek souboru.\n) oldfile = open( 'oldfile', 'r') newfile.write( oldfile.read()) newfile.close() oldfile.close() - lepe to neznam - ale rad se priucim Petr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Petr Zlamal wrote: Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Pokud si prejete posunout existujici obsah tak, aby se nic nepremazalo, zkuste test case v priloze. Pokud chcete zacatek souboru prepsat, otevrete soubor s priznakem 'r+' (resp. 'w+', pokud pri otevirani soubor jeste neexistuje). Nicmene obecne povazuji vkladani na zacatek souboru jako priznak nedobreho navrhu. Doporucuji overit, jestli Vas do toho netlaci nejaka skutecnost, kterou by slo odbourat. -- \//\/\ http://macek.sandbox.cz import os, mmap CONTENT = [ x**10 for x in range(10) ] BRICKS = Tento trik umozni jednoduse vkladat retezce \ na zacatek souboru..split() FN = '/tmp/file-prepend.blabla.tmp' # Priprava: Ciselna rada do noveho souboru print Writing:, CONTENT print open(FN, 'w'), CONTENT print # --- def prepend(f, string): sl = len(string) if sl: mm = mmap.mmap(f.fileno(), 0) fl = mm.size() mm.resize(fl + sl) # udelame misto mm.move(sl, 0, fl) # posuneme obsah doprava mm[:sl] = string # zapisene na zacatek mm.close() f = open(FN, 'r+') BRICKS.reverse() for word in BRICKS: print Prepending:, word prepend(f, word + ' ') f.close() print print Result: print open(FN).read() begin:vcard fn:Vlada Macek n:Macek;Vlada adr:;;;Liberec;;;Czech Republic email;internet:[EMAIL PROTECTED] title:Software || Networking UNIX tel;cell:+420 608 978 164 note;quoted-printable:GPG info: key 0x1F059424, fingerprint 1494 F8DD 6379 4CD7 E7E3 1FC9 D7504= 243 1F05 9424=0D=0A= =0D=0A= When you find a virus in mail from me, then I intended to infect you, sin= ce I use SW that is not distributing malware w/o my knowledge.=0D=0A= =0D=0A= x-mozilla-html:FALSE url:http://macek.sandbox.cz version:2.1 end:vcard ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Ondrej Beran napsal(a): 2008/9/10 Jan Kundrát [EMAIL PROTECTED]: Pokud dokazes na dnesnich beznych systemech opravdu *vkladat* bajty pred Tak se podivej, na co jsem reagoval. Diskutovat o tom, zda lze vkladat do souboru, aniz by se odsunul jeho konec at uz jakoukoli technikou, bych ocekaval na foru PHP strikacu, Včera jsem byl u šéfové, a když jsem jí říkal, že mám moc práce, a že bych měl dostat přidáno (peníze), tak pořád říkala dokola: Pane Kosina, heleďte, všechno je to o komunikaci. Tak ted už vím, o čem to mluvila :-D -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Ondrej Beran napsal(a): bych ocekaval na foru PHP strikacu, ale ne programatoru... ^^^Fobie z PHP?? Nevim, ale jazyk, jako jazyk. PHP nedela spatne programatory, jakoby programatori se uci PHP, protoze v nem lze rychle psat a rychle zacit generovat alespon nejake prijmy, vsak jen malokdo umi v PHP na takove urovni, aby se tim zivil i v produktivnim veku. -- MaReK - -- MaReK Penguin Olšavský PHP Voodoo private mail: [EMAIL PROTECTED] private web: http://blog.devlabs.biz Jabber: [EMAIL PROTECTED]; MSN: [EMAIL PROTECTED]; Skype: Penguin_007 tel.: +420-603-519-650; +420-775-154-689 (775-1-LINUX) Na stránce bylo napsáno: Optimalizováno pro Explorer 5, nebo lepší. Tak jsem přešel na Mozilla Firefox -- http://firefox.czilla.cz/ ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
2008/9/11 MaReK Olšavský [EMAIL PROTECTED]: bych ocekaval na foru PHP strikacu, ale ne programatoru... ^^^Fobie z PHP?? Nevim, ale jazyk, jako jazyk. A opet: kde ctes neco o PHP jazyku :-O jakoby programatori se uci PHP, protoze v nem lze rychle Ty tomu rikas jakoby programator, my tem pologramotnym copypaste individuim rikame strikaci... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Pokud se soubor otevře v režimu append, pak zápis je prováděn _vždy_ na konec souboru. POSIXový (a snad ani žádný jiný) operační systém neumí vkládat jinam než na konec souboru. Pokud je ukazatel jinde než na konci souboru, zápisem se přepisuje obsah souboru. Podle toho musíš postupovat - buď soubor načíst do paměti, nebo pokud je velký, buď postupně přesouvat data od konce dopředu nebo založit jiný soubor a data zkopírovat. (Raději ještě napíšu, že soubor lze samozřejmě otevřít pro zápis a pro čtení i zápis bez toho, aby se jeho obsah předem vymazal.) P. M. Dne 10. září 2008 12:18 Petr Zlamal [EMAIL PROTECTED] napsal(a): Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) ... Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil ... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] zapis na zacatek souboru
Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) f.write(slovo) f.close() f=open(file.txt,a) f.tell() 5L f.seek(0) f.tell() 0L f.write(slovo2) f.close() Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil cyklem, ktery vytvori novy soubor, ulozi retezec na zacatek a pote prekopiruje obsah puvodniho souboru. Zda se mi to jako neefektivni reseni, zna a poradi nekdo neco elegatnejsiho? Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Dne 10. září 2008 12:18 Petr Zlamal [EMAIL PROTECTED] napsal(a): f=open(file.txt,a) Ale furt pripisuje na konec, ikdyz dle me by nemel. Nejspis ten soubor nesmis otevirat v rezimu append ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Nejspis ten soubor nesmis otevirat v rezimu append Ked o tom nemas paru tak nerad :) Pokial subor otvoris v rezime 'write', tak sa automatiky vyprazdni. Inak zrejme to budes musiet naozaj robit tak, ako to robis. Pokial by ti ten seek aj fungoval, tak by sposobil to, ze by ta presunul na zaciatok suboru a data tam nahradzoval (tzn. prepisal by tie, co tam mas ulozene). Pokial chces data na zaciatok proste vlozit, tak mi nie je znama ina metoda ako vytvorit subor novy (avsak netvrdim, ze to inak nejde). ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Uvazujme takyto subor: --- pokus.txt --- prvy riadok druhy riadok treti riadok - Riadky subor nacitas do zoznamu, doplnis na zaciatok zoznamu riadok a potom do suboru zapises nove riad´ky, takto: --- f=open(pokus.txt,rw) # Nacitat riadky do listu lines=f.readlines() print lines f.close() # vlozit na zaciatok lines =[Nieco na zaciatok\n]+lines print lines # zapis do suboru f=open(pokus.txt,w) f.writelines(lines) f.close() -- Vysledok je --- pokus.txt --- Nieco na zaciatok prvy riadok druhy riadok treti riadok - [python] zapis na zacatek souboru Petr Zlamal to: Konference PyCZ 10.09.2008 14:12 Sent by: [EMAIL PROTECTED] Please respond to Konference PyCZ Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) f.write(slovo) f.close() f=open(file.txt,a) f.tell() 5L f.seek(0) f.tell() 0L f.write(slovo2) f.close() Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil cyklem, ktery vytvori novy soubor, ulozi retezec na zacatek a pote prekopiruje obsah puvodniho souboru. Zda se mi to jako neefektivni reseni, zna a poradi nekdo neco elegatnejsiho? Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Pripisuje ti to na konec protoze soubor otviras v rezimu append. Asi bych proste obsah souboru ulozil do pameti, tam udelal zmeny a pak poslal zpatky do souboru. Jen z hlavy: r = list(retezez na zacatek souboru\n) f = file(file.txt,r) lines = f.readlines() f.close() lines = r + lines f = file(file.txt,w) f.writelines(lines) -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Zlamal Sent: Wednesday, September 10, 2008 11:19 AM To: Konference PyCZ Subject: [python] zapis na zacatek souboru Pratele, Potreboval bych zapsat retezec na zacatek jiz existujiciho souboru. Zkousel jsem neco jako: f=open(file.txt,a) f.write(slovo) f.close() f=open(file.txt,a) f.tell() 5L f.seek(0) f.tell() 0L f.write(slovo2) f.close() Ale furt pripisuje na konec, ikdyz dle me by nemel. Tak jsem to vyresil cyklem, ktery vytvori novy soubor, ulozi retezec na zacatek a pote prekopiruje obsah puvodniho souboru. Zda se mi to jako neefektivni reseni, zna a poradi nekdo neco elegatnejsiho? Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
2008/9/10 azurIt [EMAIL PROTECTED]: Nejspis ten soubor nesmis otevirat v rezimu append Ked o tom nemas paru tak nerad :) Pokial subor otvoris v rezime 'write', tak sa automatiky vyprazdni. Je dobre, kdyz tu radi odbornici, kteri nevedi, ze se da soubor otevrit v read/write rezimu :-) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
Ondrej Beran wrote: 2008/9/10 azurIt [EMAIL PROTECTED]: Nejspis ten soubor nesmis otevirat v rezimu append Ked o tom nemas paru tak nerad :) Pokial subor otvoris v rezime 'write', tak sa automatiky vyprazdni. Je dobre, kdyz tu radi odbornici, kteri nevedi, ze se da soubor otevrit v read/write rezimu :-) Pokud dokazes na dnesnich beznych systemech opravdu *vkladat* bajty pred prvni pozici v souboru, tedy bez nejakeho nacteni souboru do pameti a zapisu zpatky na disk, mas u me pivo. Hezke hloubani, -jkt -- cd /local/pub more beer /dev/mouth signature.asc Description: OpenPGP digital signature ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] zapis na zacatek souboru
2008/9/10 Jan Kundrát [EMAIL PROTECTED]: Pokud dokazes na dnesnich beznych systemech opravdu *vkladat* bajty pred Tak se podivej, na co jsem reagoval. Diskutovat o tom, zda lze vkladat do souboru, aniz by se odsunul jeho konec at uz jakoukoli technikou, bych ocekaval na foru PHP strikacu, ale ne programatoru... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python