在IPython的Subprocess中使用input()以%% script py -2开头

时间:2015-07-31 14:38:08

标签: python ipython

以下代码使用cell magic在IPython的子进程中运行Python 2:

%%script py -2
print 'foo'

它按预期工作(即打印' foo')。

但是当我尝试在子进程中获取用户输入时,它会失败:

%%script py -2
input('foo? ')

这是输出:

foo? Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
EOFError: EOF when reading a line

为什么输入在子流程中不起作用的任何想法?

如果它有帮助,这里有一个屏幕抓取:

IPython Python 2 in Subprocess: input() fails

1 个答案:

答案 0 :(得分:0)

我猜测子进程中stdin有些奇怪(似乎已关闭),所以这可能会绕过它:

>>> %%script python
... stdin = open('/dev/tty')
... line = stdin.readline()
... print 'input:', line  # python 2.7.6 is default on my sys
... 
yay!
input: yay!

以上是使用Python 3.4.0(带有%doctest_mode)在IPython 1.2.1上运行时的输出。