【发布时间】:2022-01-14 06:51:39
【问题描述】:
文件 A 旨在使流程自动化,并有一个调用文件 B 的 for 循环。
文件 B 有一个 input() 函数,当它被调用时,它会暂停 for 循环,直到提供用户输入。
有没有一种方法可以在不中断 for 循环的情况下自动填充用户输入? (注意:我无法更改文件 B 的任何内容,只能更改文件 A)
【问题讨论】:
文件 A 旨在使流程自动化,并有一个调用文件 B 的 for 循环。
文件 B 有一个 input() 函数,当它被调用时,它会暂停 for 循环,直到提供用户输入。
有没有一种方法可以在不中断 for 循环的情况下自动填充用户输入? (注意:我无法更改文件 B 的任何内容,只能更改文件 A)
【问题讨论】:
由于您无法更改文件 B,这是正确的方法,因此我给您 3 种不同的解决方法:
修补输入功能:
import B
B.input = lambda *args: "myinput"
# Run function
B.input = input
修补标准输入:
import sys, io
old_stdin = sys.stdin
sys.stdin = io.StringIO("myinput")
# Run function
sys.stdin = old_stdin
使用subprocess.run() 运行文件 B。
选项 3 是我最同意的选项,因为它最不老套。请记住,它是 3 中最慢的选项。其他选项有点脏,但如果您别无选择,也可以正常工作。
【讨论】: