如何用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是samplef"{movie_path.stem}_corrected.avi":直接拼接生成目标文件名mkdir(exist_ok=True):避免因目录已存在抛出异常,parents=True支持创建多级目录- 增加子目录同步逻辑,保持原文件的目录结构,若不需要可直接将文件保存到
save_dir根目录
内容的提问来源于stack exchange,提问作者keenan
相关产品推荐
相关产品推荐

