Portál AbcLinuxu, 14. července 2025 02:01


Dotaz: Vlozeni radky

10.5.2005 17:29 Helac
Vlozeni radky
Přečteno: 137×
Odpovědět | Admin
dobry den mam mensi problem nemuzu prijit na to jak v pythonu naprogramovat aby mi vlozilo novy radek do textoveho souboru, soubor si otevru normalne prez open s parametrem r+ a zapisuji fukci write() ta ale premaze text co tam je a ja bych potreboval aby to tam text vlozilo. Nevite prosim nekdo jak to udelat a nebo jak to udealt v jinym jazyku ? Dekuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.5.2005 17:35 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Vlozeni radky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Otevřít jeden soubor pro čtení, druhý pro zápis, číst z jednoho, zapisovat do druhého a někde vložit tu řádku. Nakonec přejmenovat druhý soubor na první. V jakémkoliv jazyku :-)
10.5.2005 17:38 Michal Kubeček
Rozbalit Rozbalit vše Re: Vlozeni radky
To není dobrý nápad - kvůli hardlinkům.
10.5.2005 17:47 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Vlozeni radky
Nj, to je pravda. A perl -pi to bohužel takhle dělá...
10.5.2005 17:48 Helac
Rozbalit Rozbalit vše Re: Vlozeni radky
Jak to prosim myslite ohledne hardlinku ?? Muzete mi to prosim vysvetlit. ja to ale budu mit psany v pythonu
10.5.2005 17:55 Michal Kubeček
Rozbalit Rozbalit vše Re: Vlozeni radky
Máte-li jeden soubor dvojmo, řekněme A1 a A2, provedete úpravdu do A1 do A1-tmp, pak A1 smažete a přejmenujete A1-tmp na A1, bude mít A2 pořád původní obsah, zatímco A1 nový.
10.5.2005 17:55 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Vlozeni radky
Takže to dělá i sed...
$ echo -e 'hello\nworld' >test1
$ ln test1 test2
$ ls -li test?
1081450 -rw-r--r--  2 michal michal 12 May 10 17:51 test1
1081450 -rw-r--r--  2 michal michal 12 May 10 17:51 test2
$ sed -i '1a :-)' test1
$ head test?
==> test1 <==
hello
:-)
world

==> test2 <==
hello
world
$ ls -li test?
1081452 -rw-r--r--  1 michal michal 16 May 10 17:52 test1
1081450 -rw-r--r--  1 michal michal 12 May 10 17:51 test2
prostě z jednoho souboru (odkazovaného víckrát) udělá dva.
10.5.2005 19:00 Helac
Rozbalit Rozbalit vše Re: Vlozeni radky
Aha ale tak kdyz budu mit ten soubor jenom jednou (jeden) tak to pak bude v poradku ne ?
10.5.2005 17:36 Michal Kubeček
Rozbalit Rozbalit vše Re: Vlozeni radky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli chcete přidat na konec, otevřete to v modu append. Jestli vložit někam doprostřed, budete muset zkopírovat celý text a tu řádku vložit, kam je třeba. Možná ale bude jednodušší použít třeba sed.
wake avatar 10.5.2005 17:45 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Vlozeni radky
Odpovědět | | Sbalit | Link | Blokovat | Admin
jednoduchy algoritmus:
while( readline(INFILE, line) AND NOT IsItTheLineAfterWhichWantInsert(line) )
    writeline(OUTFILE, line)
writeline(OUTFILE, insertedline)
while( readline(INFILE, line) )
    writeline(OUTFILE, line)
Tento příspěvek má hlavičku i patičku!
10.5.2005 17:46 Helac
Rozbalit Rozbalit vše Re: Vlozeni radky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dik za rychlou odpoved .-), ale moc sjte me nepotesili :-/. Jeste otazecka v pythonu jde taky jako v perlu pouzit exec() a system() ? Ja by se to delalo s tim sedem prosim kdybych si nechal zjistit treba offset prez tell()

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.