Я столкнулся с несколько необычной ситуацией. Я пытаюсь сценарий интерактивной консоли (для целей обучения/тестирования), и я попытался следующие:Где находится интерактивная подсказка «>>>» Python?
$ python > /dev/null
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print 3
>>>
3
не печатается, так четко все остальное было на stderr
. Все идет нормально. Но тогда мы перенаправлять stderr
:
$ python 2> /dev/null
>>> print 3
3
>>>
Как приглашение печататься в обоих случаях?
EDIT: перенаправление как stdout
, так и stderr
ничего не может быть напечатано. Таким образом, Python явно «выбирает» один из stdout
или stderr
. Означает ли это, что это произошло? Я не мог понять, как это делается в исходном коде Python.
Да, это странно. Возможно, он проверяет 'isatty'? – delnan
Это было бы моим догадком, но я не могу понять, где именно это делает Python. Самое странное, что 'PyOS_StdioReadline', функция, которая, как представляется, отвечает за чтение ввода, жестко запрограммирована для вывода приглашения на' stderr'. Если 'stderr' были перенаправлены на' stdout', как следует из второго примера, мы должны увидеть баннер. – nneonneo
Возможно, было бы проще использовать инструмент, предназначенный для обучения Python, например [особенность ноутбука ipython] (http://ipython.org/notebook.html). –