为什么标准输入重定向在Jupyter Notebook中不起作用?

时间:2018-10-18 05:07:04

标签: python jupyter-notebook

背景

我想在代码中模拟 int maxNumber = 0; int previousNumber = 0; int nextNumber = 1; System.out.println("How many numbers you want in Fibonacci:"); Scanner scanner = new Scanner(System.in); maxNumber = scanner.nextInt(); System.out.print("Fibonacci Series of "+maxNumber+" numbers:"); for (int i = 1; i <= maxNumber; ++i) { System.out.print(previousNumber+" "); int sum = previousNumber + nextNumber; previousNumber = nextNumber; nextNumber = sum; } python xxx.py < file.txt会期望xxx.py,这里user input重定向到stdin

所以我有以下代码来模拟重定向:

try.py:

file.txt

以上在Windows cmd中的运行情况如下:

import sys
f = open('file.txt', 'w')
f.write('"Tom"')
f.write('\n')
f.write('"Jerry"')
f.write('\n')
f.close()

sys.stdin = open('file.txt')

for i in range(2):
    val = input()
    print('Say hello to: ' + val)

sys.stdin = sys.__stdin__ # restore stdin

问题:

然后,将其粘贴到C:\work>python try.py Say hello to: Tom Say hello to: Jerry ,然后单击运行。它仍然给我一个jupyter notebook,让我输入input text box的内容。

为什么在input中运行standard input redirect时没有效果? jupyter notebook在执行我们的代码方面做了一些特别的事情吗?以后在Jupyter notebook中运行代码时,我们可能需要注意什么?请提出建议。

注意::为了清楚起见,我将图片粘贴在此处,代码与Jupyter中的代码完全相同。

enter image description here

0 个答案:

没有答案