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

Python脚本配合CMD循环:如何让函数b在所有MOV处理完成后执行

解决方案

问题根源在于你当前的CMD循环会为每个MOV文件单独启动一次Python脚本,每次脚本执行时都会先跑a()处理单个MOV,接着立刻执行b()生成PDF,自然无法等到所有MOV处理完成。下面提供两种可行的解决方式:


方式一:修改Python脚本,让它批量处理所有MOV

调整脚本逻辑,让它可以一次性遍历并处理目标文件夹下的所有MOV文件,完成后再执行b()。

修改后的脚本示例:

import sys
import glob

def a(mov_path):
    # 替换为你原有的MOV转CSV代码,使用传入的mov_path作为处理目标
    print(f"extracting {mov_path}..")
    # ***some code ***

def b():
    # 替换为你原有的CSV转PDF代码
    print("(function b() is called)")
    print("saved csv to pdf.")

if __name__ == "__main__":
    # 可选:如果传入单个MOV路径,仅处理该文件(用于调试)
    if len(sys.argv) > 1:
        single_mov = sys.argv[1]
        a(single_mov)
    else:
        # 批量处理指定路径下所有MOV文件(替换为你的实际文件夹路径)
        target_folder = r"你的MOV文件根路径"
        all_mov_files = glob.glob(f"{target_folder}/**/*.mov", recursive=True)
        
        # 遍历处理每个MOV
        for mov_file in all_mov_files:
            a(mov_file)
        
        # 所有MOV处理完成后,执行PDF生成
        b()

使用方式:
直接在CMD中执行一次脚本即可,无需循环:

py report.py

方式二:拆分脚本执行逻辑,分两步执行

如果不想修改批量处理的逻辑,可通过命令行参数控制脚本是否执行b(),先批量处理所有MOV,再单独触发b()。

修改后的脚本示例:

import sys

def a(mov_path):
    # 原有的MOV转CSV代码
    print(f"extracting {mov_path}..")
    # ***some code ***

def b():
    # 原有的CSV转PDF代码
    print("(function b() is called)")
    print("saved csv to pdf.")

if __name__ == "__main__":
    if len(sys.argv) > 1:
        # 如果参数是--run-b,则执行b()
        if sys.argv[1] == "--run-b":
            b()
        # 否则处理传入的单个MOV文件
        else:
            mov_file = sys.argv[1]
            a(mov_file)

使用方式:

  1. 先在CMD中循环处理所有MOV文件(仅执行a()):
for /R "file path" %G IN (*.mov) Do (py report.py "%G")
  1. 所有MOV处理完成后,单独执行一次脚本触发b():
py report.py --run-b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:20:38