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)
使用方式:
- 先在CMD中循环处理所有MOV文件(仅执行
a()):
for /R "file path" %G IN (*.mov) Do (py report.py "%G")
- 所有MOV处理完成后,单独执行一次脚本触发
b():
py report.py --run-b
内容的提问来源于stack exchange,提问作者amslp
相关产品推荐
相关产品推荐

