如何自动在Python函数中设置“输入”?
问题描述:
所以如果上述问题没有任何意义,我有一个Python函数(不是我写的,但我必须运行很多次),需要使用“输入”功能。即如何自动在Python函数中设置“输入”?
def foo():
x = input()
~~Do stuff~~
return ~~some relevant variable~~
但我不想每次都输入输入。 “自动”输入输入的最佳方式是什么,以便我不必连续输入值?
重要编辑:非常重要的是要注意我不能更改功能。事情必须输入作为STDIN输入
答
您可以更改字符串流或标准输入做一些类似的文件:
import sys
from io import StringIO
sys.stdin = StringIO('test')
然后每次调用input()
将在获得价值字符串流。
编辑:然后您可以读取文件并每次更新sys.stdin
的值,每行的值。
答
我高度,高度建议你实现一个上下文管理器,并严格使用这个上下文管理器,当你想这样做。所以,像这样:
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
传递值给函数的参数?这取决于你在做什么。 –
只要函数返回您手动输入的值并跳过调用'输入' – pvg
我刚刚编辑它以指定我无法更改函数的内部。它的工作原理 – wjmccann