Portál AbcLinuxu, 18. července 2025 17:54


Dotaz: python: Rozbity parser

6.6.2018 13:50 luky
python: Rozbity parser
Přečteno: 2703×
Odpovědět | Admin
Muze nejaky pythonista osvetlit, proc nasledujici kod je odmitnut pro syntaktickou chybu:

python -c'import time; while 1: time.sleep(0.05)'

pritom nasledujici kod funguje:

python -c'while 1: import time; time.sleep(0.05)'

Ve skutecnocti mam v cyklu vice kodu, ale pro ilustraci problemu neni potreba. Prijde mi to jako bug v parseru.

Ř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

6.6.2018 15:03 pythonist
Rozbalit Rozbalit vše Re: python: Rozbity parser
Odpovědět | | Sbalit | Link | Blokovat | Admin
precti si specifikaci

compound_stmt ::=  if_stmt
                   | while_stmt
                   | for_stmt
                   | try_stmt
                   | with_stmt
                   | funcdef
                   | classdef
                   | decorated
suite         ::=  stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT
statement     ::=  stmt_list NEWLINE | compound_stmt
stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]

6.6.2018 15:54 luky
Rozbalit Rozbalit vše Re: python: Rozbity parser
Aha, ta gramatika je nepouzitelna na onelinery, protoze smycka musi byt vzdy prvni na radku.

Nakonec jsem nainstaloval microperl, ale 480kB na 16MB flash docela boli.

7.6.2018 08:20 Ja
Rozbalit Rozbalit vše Re: python: Rozbity parser
Co ti brání napsat:

python -c'import time
while 1: time.sleep(0.05)'

?
7.6.2018 14:43 luky
Rozbalit Rozbalit vše Re: python: Rozbity parser
Mozna Vas to prekvapi, ale ne vsichni to pak umi spravne prekopirovat do terminalu. Ze stejneho duvodu se vyhybam vytvareni souboru. Casto se i stava, ze nejaky program nahradi odradkovani za nejaky jiny bily znak a pak to nefunguje. Podobne trable mam i s - a –.
8.6.2018 08:44 Ja
Rozbalit Rozbalit vše Re: python: Rozbity parser
Tak pak tu máme superšpek :-)

python -c "$(printf '%s\n%s' 'import time' 'while 1: time.sleep(0.05)')"
Bystroushaak avatar 20.6.2018 13:02 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: python: Rozbity parser
Nakonec jsem nainstaloval microperl, ale 480kB na 16MB flash docela boli.
Co že to vlastně děláš?
22.6.2018 16:53 luky
Rozbalit Rozbalit vše Re: python: Rozbity parser
Psal jsem kucharku pro servisaky jak monitorovat nejake countery. Potrebujou to bud vypisovat a nebo aby terminal pipal, kdyz je hodnota v danejch mezich.
Bystroushaak avatar 22.6.2018 17:11 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: python: Rozbity parser
A proč to běží přímo na těch zařízeních a nečteš to z toho z venčí?
25.6.2018 19:33 luky
Rozbalit Rozbalit vše Re: python: Rozbity parser
Protoze seriovy terminal a nebo SSH klienta maji vsichni, co by se mohli dostat do pozice, ze to potrebuji pouzit. Pokud bychom meli nejakeho tezkeho klienta, musel by se instalovat predem.
rADOn avatar 8.6.2018 11:06 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: python: Rozbity parser
Odpovědět | | Sbalit | Link | Blokovat | Admin
python -c 'import time, itertools ; map(time.sleep, itertools.repeat(0.05))'
"2^24 comments ought to be enough for anyone" -- CmdrTaco
8.6.2018 11:25 asdf
Rozbalit Rozbalit vše Re: python: Rozbity parser
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo -e 'import time\nwhile 1: time.sleep(0.1)'|python
8.6.2018 16:52 Ja
Rozbalit Rozbalit vše Re: python: Rozbity parser
Čistě technická: echo bych nedoporučoval - jednak některé implementace neznají parametr -e a prostě ho vypíšou, druhak je pak třeba hlídat a escapovat všechna zpětná lomítka, printf tyto nedostatky nemá.

A ještě detail, přesměrováním do interpreta se zabije vstupní kanál, který by mohl být potřeba k načítání dat či uživatelských vstupů.
9.6.2018 09:24 logik
Rozbalit Rozbalit vše Re: python: Rozbity parser
pokud je tam bash a je třeba stdin, tak je elegantní

python <( printf( ..... ) )

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.