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

如何用Pathlib遍历目录并为文件名添加_corrected.avi后缀保存新文件?

使用Pathlib批量处理并保存视频文件

需求说明

遍历/movies目录下的所有子目录,对每个视频文件处理后,保存到/corrected_movies目录,新文件名需添加_corrected.avi后缀。

原代码问题

现有代码无法正确生成目标文件名,原代码如下:

movie_dir = pathlib.Path("/movies")
save_dir = pathlib.Path("/corrected_movies")


for dir in movie_dir.iterdir():
    for movie_path in dir.iterdir():
        save_path = save_dir / movie_path # want to add _corrected.avi to end of file name

解决方案

利用Pathlib的stem(文件名不含后缀)属性,配合字符串拼接生成新文件名,同时完善目录创建逻辑避免报错:

import pathlib

movie_dir = pathlib.Path("/movies")
save_dir = pathlib.Path("/corrected_movies")

# 确保根保存目录存在,parents=True会自动创建多级目录
save_dir.mkdir(exist_ok=True, parents=True)

for sub_dir in movie_dir.iterdir():
    if not sub_dir.is_dir():
        continue  # 跳过非目录项
    # 创建对应子目录,保持原目录结构
    target_sub_dir = save_dir / sub_dir.name
    target_sub_dir.mkdir(exist_ok=True)
    
    for movie_path in sub_dir.iterdir():
        # 仅处理AVI格式文件(可选,根据需求调整)
        if movie_path.suffix.lower() != ".avi":
            continue
        # 生成带_corrected后缀的新文件名
        new_filename = f"{movie_path.stem}_corrected.avi"
        save_path = target_sub_dir / new_filename
        
        # 在这里添加你的文件处理逻辑,例如:
        # process_video(movie_path, save_path)
        print(f"已生成保存路径:{save_path}")

关键说明

  • movie_path.stem:提取文件名的主体部分(不含后缀),比如sample.avi的stem是sample
  • f"{movie_path.stem}_corrected.avi":直接拼接生成目标文件名
  • mkdir(exist_ok=True):避免因目录已存在抛出异常,parents=True支持创建多级目录
  • 增加子目录同步逻辑,保持原文件的目录结构,若不需要可直接将文件保存到save_dir根目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:39:21