Интерактивный режим 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.

Другие вопросы по тегам