将文件设为默认标准输入

Making a file as default stdin

我想默认从文件中获取输入。 例如:

num=input()

此语句应从文件中获取输入,而不是等待按键命中。我不想通过将标准输入重定向到文件来做到这一点,默认情况下我想要它。简单地说,键盘是默认的输入设备,所以我想要一个文件来代替键盘来提供输入。

您可以像这样将文件附加到 OS 级别的标准输入:

python script.py <input.txt

对于脚本来说,无论何时调用 input(),用户都会键入文件中的下一行。

一个简单的解决方法。

def file_input(filename):
    with open(filename, 'r') as f:
        for line in f:
            yield line
_input_iterator = file_input('input.txt')

def input_():               # replace input
    return _input_iterator.next()

您可以通过使用 class 包装它或使其成为一个模块来避免全局变量。


我不喜欢这样,但这是可能的。真正替换标准输入(还没有在 windows 上尝试过)

import sys
sys.stdin = file('input.txt', 'r')
input_line = input()

对于 UNIX 模型,stdin 只是一个文件。当您使用像 pipe 这样的实用程序时,您会 modify/redirect stdin 个子进程。如果在父级范围(例如终端)中修改进程的 stdin,感觉会更舒服。否则它看起来不像 'std' 了。