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

Python如何将sys.argv参数传递给多个被调用的.py脚本

问题根因

你在通过subprocess.Popen启动子Python脚本时,仅传入了脚本路径作为启动参数,没有把提前拿到的日期参数追加到子进程的启动参数列表中,因此file1.py、out1.py等子脚本的sys.argv数组内自然不会包含该日期值。

解决方案

1. 修改auto.py代码

首先补全必要的依赖导入,然后调整子进程启动的参数列表,把日期参数传递给每个子脚本,修改后的完整代码如下:

import sys
import subprocess

date = str(sys.argv[1])
print(sys.argv[1])
# 读取待执行Python脚本
scripts_list = [r'C:\user\file1.py', r'C:\user\file2.py', r'C:\user\file3.py']
output_list = [r'C:\user\out1.py', r'C:\user\out2.py', r'C:\user\out3.py']

input_processes = []
output_processes = []

for script in scripts_list:
    # 把日期参数追加到启动参数列表中
    p = subprocess.Popen(['python', script, date])
    input_processes.append(p)    

for p in input_processes:
    p.wait()

for script in output_list:
    # 若output类脚本也需要日期参数,同样追加,不需要可以去掉date参数
    p = subprocess.Popen(['python', script, date])
    output_processes.append(p)    

for p in output_processes:
    p.wait()

2. 子脚本侧接收参数

在每个需要用到日期的子脚本(file1.py/file2.py/out1.py等)中,通过如下逻辑即可拿到传入的日期参数:

import sys
# 增加参数校验,避免漏传参数时报错
if len(sys.argv) < 2:
    print("未传入日期参数")
    exit(1)
date = sys.argv[1]
# 后续正常使用date变量即可

注意事项

  • 若子脚本本身有其他自定义参数,将日期参数按顺序追加到启动参数列表最后即可,对应调整子脚本内sys.argv的索引取值即可
  • 采用列表形式传参给subprocess.Popen会自动处理参数内的空格、特殊字符,无需额外转义
  • 若不需要给output_list内的脚本传日期参数,删除对应Popen参数列表里的date即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:15:03