如何自动在Python函数中设置“输入”?

问题描述:

所以如果上述问题没有任何意义,我有一个Python函数(不是我写的,但我必须运行很多次),需要使用“输入”功能。即如何自动在Python函数中设置“输入”?

def foo(): 
    x = input() 
    ~~Do stuff~~ 
    return ~~some relevant variable~~ 

但我不想每次都输入输入。 “自动”输入输入的最佳方式是什么,以便我不必连续输入值?

重要编辑:非常重要的是要注意我不能更改功能。事情必须输入作为STDIN输入

+0

传递值给函数的参数?这取决于你在做什么。 –

+0

只要函数返回您手动输入的值并跳过调用'输入' – pvg

+0

我刚刚编辑它以指定我无法更改函数的内部。它的工作原理 – wjmccann

您可以更改字符串流或标准输入做一些类似的文件:

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