[python] raw_input() jeste jednou (bylo raw_input() bug ... vyvoj Pythonu, jimavy pribeh)

Petr Prikryl PrikrylP na skil.cz
Středa Srpen 3 12:23:12 CEST 2005


Další poznámka k řešení problému s raw_input()...

Petr Prikryl
> pavel.kosina
> > [...] Mě zase rozčiluje, že nejde 
> > raw_input s unicodem - už tu 
> > jednou bylo, od pepra, že hlásil  bug:
[...]
> > ale ted jsem ho tam hledal a vůbec tam není.
[...]
> Je to tam, ale je mezi uzavřenými [...] Částečné řešení
> lze nalézt u poslední poznámky by birkenfeld, tj. explicitně
> 
>     raw_input(s.encode(sys.stdout.encoding))
> 
> Dá se to vyřešit centralizovaně například definicí vlastní funkce:
> 
> def my_input(s):
>     import sys
>     return raw_input(s.encode(sys.stdout.encoding))
> 
> Ale moc se mi to nelíbí, protože takhle by měla fungovat
> raw_input() už "od narození". [...]

Až teď jsem si všiml názoru GvR, který se týká
raw_input() -- viz http://www.python.org/peps/pep-3000.html
a http://www.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf

Stučně řečeno, GvR lituje, že raw_input() vůbec vzniklo.
Doporučuje používat sys.stdin.readline(). Něco na tom je.
Nedobře fungující implementaci raw_input() můžu jednoduše
nahradit vlastní malou funkcí:

========================================
import sys

def my_input(prompt):
    sys.stdout.write(prompt)
    return sys.stdin.readline()

r = my_input('prompt: ')
print r
========================================

pepr



Další informace o konferenci Python