You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用import时如何从Python脚本传参运行另一个Python脚本

Python跨脚本exec传参实现方案(不导入目标脚本)

错误原因

你之前写的代码无法正常运行,核心问题有两个:

# 错误写法
exec(open("test2_main.py" "cat" "bat").read())
  • Python会自动拼接相邻的字符串字面量,这行代码实际尝试打开路径为test2_main.pycatbat的文件,必然触发文件不存在错误
  • 即使路径填写正确,exec默认继承外层脚本的sys.argv,不会自动加载你要传入的自定义参数,内层脚本自然读不到cat、bat

正确实现代码

你不需要修改内层test2_main.py的任何逻辑,只需要在外层脚本临时替换sys.argv再执行exec即可,运行效果和命令行直接执行python test2_main.py cat bat完全一致,全程不会导入目标脚本作为模块调用。
test1_src.py参考代码:

import sys
# 暂存外层原有启动参数,执行完内层脚本后恢复
old_args = sys.argv.copy()
# 构造内层脚本的参数列表:首位是脚本名,后面依次是要传入的业务参数
sys.argv = ["test2_main.py", "cat", "bat"]
# 读取并执行内层脚本
exec(open("test2_main.py", encoding="utf-8").read())
# 恢复外层原有参数,不影响外层后续逻辑运行
sys.argv = old_args

方案说明

  • 内层脚本通过sys.argv[1]、sys.argv[2]可正常获取cat、bat取值,和直接启动内层脚本的运行行为完全一致
  • 执行完内层脚本后立即恢复外层原有参数,不会产生额外副作用
  • 仅导入Python内置标准库sys,没有导入目标脚本模块,完全符合直接运行完整目标脚本的要求

注意:open()仅用于读取目标脚本文件,只需要传入脚本文件路径即可,不要把传给脚本的业务参数写到open()的调用参数里。


内容的提问来源于stack exchange,提问作者Yash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:03:15