Интерактивный режим Python не работает при чтении с STD в
Учитывая следующий скрипт Python....
$ cat readStdin.py
#!/usr/bin/python
import sys
var = "".join(sys.stdin.readlines()).rstrip()
print var
... я получаю следующий вывод:
$ echo hello | python -i readStdin.py
hello
>>>
$
... другими словами, он не висит в консоли python, а возвращается к bash. Кто-нибудь знает, как заставить его оставаться в консоли Python???
1 ответ
Решение
Учти это -
$ echo print 4*2 | python -i
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
Type "help", "copyright", "credits" or "license" for more information.
>>> 8
>>>
$
Эхо производит print 4*2
, Python даже в интерактивном режиме рассматривает это как ввод для интерпретации. Следовательно, мы видим 8 там. После этого переводчик встречает EOF
так что выходит. Подумайте, что вы нажимаете, чтобы выйти из переводчика - Ctrl+d
или же ^D
, Это просто еще один способ производства EOF
на *nix.