我想将文件分配给sys.stdin
,以便我可以使用input()
读取文件的内容。下面的代码按照脚本的预期运行,但是当它用笔记本编写时会出现问题。在调用函数input()
之后,它向我显示了一个输入教科书,我不想要,因为我将stdin重新分配给了一个文件。所以,我希望能够读取文件中的行。
import sys
file = open("input.in")
sys.stdin = file
val = input()
print(val)
在我看来笔记本忽略了sys.stdin
。我无法找到为什么会发生这种情况以及如何解决它。
感谢。
更新
我最终会覆盖input
功能。它会完成这项工作,但我会留下问题,看看是否有人有更好的解决方案。
file = open("input.in")
input = file.readline
答案 0 :(得分:1)
您可以将文件读取到内存缓冲区,然后指示stdin从中读取。例如,重新显示文件
import sys
import io # in python2, import StringIO
input_file = open('myfile.txt', 'r')
sys.stdin = io.StringIO(input_file.read())
for line in sys.stdin:
print(line, end='')
出于您的目的,您可能需要
import sys
import io # in python2, import StringIO
input_file = open('myfile.txt', 'r')
sys.stdin = io.StringIO(input_file.read())
val = sys.stdin.readline()
# Rest of program using val