[python] hledani konkretnich souboru

Radek Svarz py.cz na svarz.cz
Úterý Srpen 10 18:09:16 CEST 2004


ano, odhadl jste me presne - pouzivam Windows, kde find neni.

Navic jsem to bral jako cviceni Pythonu a overeni, ze neco takoveho
mohu napsat rychle a jednoduse (proste tak, jak se o pouziti Pythonu
neustale pise).

Divil bych se, ze to nejde napsat efektneji.

VM> Upozornuji, ze je pametove docela neefektivni pomoci metody readlines()
VM> nacitat cely soubor naraz, kdyz vas zajimaji jednotlive radky.

for line in f.readlines():

No tady bych cekal, ze Python udela pametovou optimalizaci za me,
proste ze precte radky tehdy, kdyz jsou potreba.

Radek


VM> [Autor citovane zpravy: Radek Svarz, cas odeslani: 10.08.2004 16:13]

>>Vážení,
>>koketuju s Pythonem nekolik mesicu. Nedavno jsem narazil na ulohu na
>>spocitani narocnosti prekladu jednoho softu. Primarne jsem chtel
>>spocitat, kolik buttonu (gif) bude treba prelozit a kolik frazi (v
>>ruznych mnoha souborech, fraze je urcena zacatkem "define('" na radce)
>>se ve zdrojacich nachazi.
>>
>>Mohl by nekdo napsat, jak tenhle kod zjednodusit? cekal bych neco na 3
>>radky ;)
>>  
>>
VM> Proc delat veci jednoduse, kdyz to jde slozite, ze? :-)
VM> Co pouzit neco jako tohle:

VM>     find -type f -name 'button*.gif' | wc -l
VM>     ( find -type f -name '*.php' -print0 | xargs -0 grep '^define(' ) |
VM> wc -l

VM> Pokud 'define(' muze byt v libovolnem souboru, lze druhy prikaz zkratit na:

VM>     grep -r '^define(' * | wc -l

VM> Predpoklada se, ze 'define(' muze byt na kazdem radku jen jedenkrat, a
VM> to na zacatku radku. Pokud chcete spocitat vyskyt vsech retezcu
VM> 'define(' v souborech, tak by se do pajpy jeste muselo vlozit neco jako
VM> prikaz 'tr'.

VM> Pozor na to, ze muze byt dovoleno mezi klicove slovo a zavorku psat bile
VM> znaky.

VM> Ehm, take predpokladam, ze pouzivate Linux (jine Unixy nemaji tak
VM> pritulne utility a nemusi tam toto fungovat). Pokud to ma byt pro
VM> Windows, asi uz budete zvykly na to, jak se drbat levou rukou pres hlavu
VM> na pravem uchu a budete potrebovat neco jako program, ktery jste poslal. :-)

VM> Upozornuji, ze je pametove docela neefektivni pomoci metody readlines()
VM> nacitat cely soubor naraz, kdyz vas zajimaji jednotlive radky.

VM> Vlada





Další informace o konferenci Python