所以,如果上面的问题没有任何意义,我有一个Python函数(不是由我编写,但我必须多次运行),需要使用“输入”函数。即。
def foo():
x = input()
~~Do stuff~~
return ~~some relevant variable~~
但我不想每次都输入输入。 “自动”输入输入的最佳方法是什么,以便我不必连续输入值?
重要编辑:非常重要的是要注意我无法更改功能。该东西必须作为STDIN输入输入
答案 0 :(得分:4)
您可以通过执行与此类似的操作来更改字符串流或文件的标准输入:
import sys
from io import StringIO
sys.stdin = StringIO('test')
然后每次调用input()
都会获得字符串流的值。
编辑:然后,您可以读取文件并每次更新sys.stdin
的值,每行更新一次。
答案 1 :(得分:1)
我非常高兴,高度建议你实现一个上下文管理器,并在你想要的时候严格使用这个上下文管理器。所以,像:
import sys
class as_stdin:
def __init__(self, buffer):
self.buffer = buffer
self.original_stdin = sys.stdin
def __enter__(self):
sys.stdin = self.buffer
def __exit__(self, *exc):
sys.stdin = self.original_stdin
然后你可以用更加严格控制的方式重定向你的标准输入:
>>> import io
>>> from redirect import as_stdin
>>> def echo():
... print(input())
...
>>> with as_stdin(io.StringIO('hello, world')):
... echo()
...
hello, world
>>> x = input()
hello, x
>>>
>>> print(x)
hello, x