如何从批处理文件运行Python脚本时自动为input函数传递输入值
解决方案
出现EOF错误的核心原因是Windows批处理管道传输时,Python默认的标准输入缓冲机制无法正常识别echo输出的换行符,导致input函数判定输入提前结束。你可以选择以下任意一种方法解决:
- 方法1:调整批处理echo写法,补全标准换行
(echo 1&&echo.) | python_location\python.exe python_script_location\test.py
echo.用于输出明确的回车换行符,匹配input函数的输入结束判定规则。
- 方法2:给Python命令添加无缓冲运行参数
echo 1 | python_location\python.exe -u python_script_location\test.py
-u参数会关闭Python的标准输入输出缓冲,让管道传输的内容可以被即时正常读取。
- 方法3(长期使用更推荐):修改Python脚本兼容命令行传参
修改Python脚本的输入逻辑,优先读取命令行参数,不存在时再触发input交互:
import sys # 优先取第一个命令行参数作为输入值 user_input = sys.argv[1] if len(sys.argv) > 1 else input("请输入值:") # 原有后续逻辑不变
修改后批处理无需使用管道,直接传参即可,稳定性最高:
python_location\python.exe python_script_location\test.py 1
内容的提问来源于stack exchange,提问作者MateoMontero01
相关产品推荐
相关产品推荐

