如何让Python集中脚本自动响应插入脚本的input()输入请求?
自动响应Python插入脚本的input()输入需求
当然可以,根据你调用插入脚本的方式,有两种靠谱的解决办法:
场景1:通过subprocess调用外部脚本
如果你的集中脚本是启动独立子进程运行各个插入脚本,直接用subprocess的输入重定向功能,把固定路径传给子进程的标准输入就行:
import subprocess import sys # 替换成你的固定文件夹路径 FIXED_FOLDER_PATH = "/home/user/data_files" # 所有需要执行的插入脚本列表 insert_scripts = ["insert_users.py", "insert_orders.py", "insert_products.py"] for script in insert_scripts: # 把路径编码后通过stdin传给子进程,input()会自动读取 subprocess.run( [sys.executable, script], input=FIXED_FOLDER_PATH.encode("utf-8"), check=True )
场景2:通过import导入脚本执行
如果是直接在集中脚本里导入插入脚本并调用其功能,就用「猴子补丁」替换内置的input函数,让所有input()调用直接返回固定路径:
# 先定义固定路径 FIXED_FOLDER_PATH = "/home/user/data_files" # 备份原input函数(可选,执行完可以恢复) original_input = __builtins__.input # 定义替代input的函数,直接返回固定路径 def auto_input(prompt=None): # 可选:打印原提示,方便跟踪执行进度 if prompt: print(prompt) return FIXED_FOLDER_PATH # 替换全局的input函数 __builtins__.input = auto_input # 现在导入并执行各个插入脚本的功能 import insert_users import insert_orders import insert_products insert_users.run_insert() insert_orders.run_insert() insert_products.run_insert() # 可选:恢复原input函数,避免影响后续代码 __builtins__.input = original_input
这两种方法都不用修改任何插入脚本,完全满足你的需求。
内容的提问来源于stack exchange,提问作者David Warren
相关产品推荐
相关产品推荐

