如何向嵌入在Python脚本中的代码自动传递输入(无需人工交互)
实现自动向exec中的input()传递输入的方法
完全可行,以下是两种实用的实现方式:
方法一:重定向标准输入
通过替换sys.stdin为模拟输入流,让input()从预设内容中读取,而非等待控制台输入:
import sys from io import StringIO # 保存原始标准输入,避免影响后续代码 original_stdin = sys.stdin # 模拟输入内容,多行输入用\n分隔 sys.stdin = StringIO("自动输入的第一行内容\n自动输入的第二行内容") exec("i=input()\nprint(i)\nj=input()\nprint(j)") # 恢复原始标准输入 sys.stdin = original_stdin
方法二:临时替换input函数
直接替换全局的input函数,让exec内的input()调用我们定义的模拟函数,返回预设内容:
# 保存原始input函数 original_input = __builtins__.input # 自定义模拟input,可根据需求返回不同内容 def mock_input(prompt=""): # 若需要区分不同prompt返回值,可在这里加逻辑 return "自动输入的内容" __builtins__.input = mock_input exec("i=input()\nprint(i)") # 恢复原始input函数 __builtins__.input = original_input
两种方法各有适用场景:第一种适合需要模拟多行输入的情况;第二种更灵活,可根据输入提示返回不同内容,适合简单输入场景。
内容的提问来源于stack exchange,提问作者M Coder
相关产品推荐
相关产品推荐

