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

如何在Python脚本A中导入需通过系统参数启动运行的脚本B

导入依赖命令行参数的Python脚本方案

方案1:重构脚本B(最推荐,无副作用)

将脚本B的核心逻辑和命令行执行逻辑拆分,把依赖sys.argv的代码放到if __name__ == "__main__"代码块内,这样导入时不会自动执行参数读取逻辑。
重构后的B.py示例:

import sys

# 核心逻辑封装为函数,不依赖全局sys.argv
def core_func(arg1: int, arg2: int) -> int:
    return arg1 + arg2

# 仅直接运行B.py时才读取命令行参数
if __name__ == "__main__":
    arg1 = int(sys.argv[1])
    arg2 = int(sys.argv[2])
    print(core_func(arg1, arg2))

脚本A导入用法:

import B

# 直接调用B的模块方法,自定义传入参数
res = B.core_func(30, 10)
print(res)

方案2:不修改B.py,临时注入命令行参数

如果无法修改B的代码,可以在导入B前手动修改sys.argv模拟命令行传参,导入完成后可恢复原始参数避免影响后续逻辑。
脚本A示例:

import sys

# 备份原始argv
old_argv = sys.argv.copy()
# 模拟执行python B.py 30 10的参数结构
sys.argv = ["B.py", "30", "10"]

# 此时导入B会正常读取参数
import B

# 恢复原始argv
sys.argv = old_argv

# 可直接访问B内的所有变量、函数
print(B.arg1)
print(B.core_func())

注意:如果B内有全局的打印、文件写入等操作,导入时会自动执行。

方案3:仅需要B的运行结果,无需导入内部模块

如果不需要调用B的内部方法和变量,只是要获取B运行后的输出,可以直接用subprocess执行命令,无需导入:

import subprocess

run_res = subprocess.run(
    ["python", "B.py", "30", "10"],
    capture_output=True,
    text=True
)
# 打印B的标准输出内容
print(run_res.stdout)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:27:03