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

如何从Python脚本传递参数调用另一个Python脚本?

嘿,这个问题其实有两种常用的解决思路,我给你一步步拆解下,保证你能轻松实现~


方法1:用subprocess模块模拟终端传参

如果你想完全复刻在终端里运行python script1.py 参数1 参数2的效果,那用subprocess模块就最合适了,它能帮你启动新进程调用script1,还能获取它的输出。

先写script1.py的代码,让它能读取命令行参数:

# script1.py
import sys

if __name__ == "__main__":
    # sys.argv[0]是脚本本身的路径,后面的元素才是我们传入的参数
    if len(sys.argv) > 1:
        print(f"script1收到的参数:{sys.argv[1:]}")
    else:
        print("script1没有收到任何参数")

然后在script2.py里调用它,传递你想要的参数:

# script2.py
import subprocess

# 调用script1.py,同时传递"hello"和"world"两个参数
run_result = subprocess.run(
    ["python", "script1.py", "hello", "world"],
    capture_output=True,
    text=True  # 让输出以字符串形式返回,而不是字节
)

# 打印script1的运行结果
print("script2调用script1的输出:")
print(run_result.stdout.strip())

当你在终端运行python script2.py时,会得到这样的输出:

script2调用script1的输出:
script1收到的参数:['hello', 'world']

方法2:将script1作为模块导入,直接传参给函数

如果只是想复用script1里的逻辑,没必要启动新进程,直接把它当作Python模块导入,调用里面的函数传参更高效。

先改造script1.py,把参数处理逻辑封装成函数:

# script1.py
def handle_args(*args):
    if args:
        return f"script1收到的参数:{list(args)}"
    else:
        return "script1没有收到任何参数"

# 保留终端运行的逻辑,这样单独执行script1.py时也能正常工作
if __name__ == "__main__":
    import sys
    print(handle_args(*sys.argv[1:]))

然后在script2.py里导入这个函数,直接传参调用:

# script2.py
from script1 import handle_args

# 直接调用函数,传递任意数量的参数
output = handle_args("hello", "world", "python")
print("script2调用script1的输出:")
print(output)

运行python script2.py后,输出是:

script2调用script1的输出:
script1收到的参数:['hello', 'world', 'python']

简单总结下:如果需要保持script1的独立运行能力,选第一种方法;如果只是想复用逻辑,第二种方法更高效灵活~

内容的提问来源于stack exchange,提问作者Fernando S. Peregrino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:14:50