本文主要是介绍通过Python脚本批量复制并规范命名视频文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,...
一、问题场景:杂乱的视频文件名
在日常工作和学习中,我们经常会遇到这样的文件命名情况:
[1]基础教程.mp4
[23]进阶技巧.mp4
[156]项目实战.mp4
这种包含数字编号的命名方式虽然直观,但存在两个明显问题:
- 数字位数不一致,排序时会出现顺序错乱
- 需要修改文件名但必须保留原始文件
本文将介绍如何通过python脚本批量复制并规范命名视频文件,实现:
- 自动补齐4位数字编号
- 保留原始文件不修改
- 智能识别有效文件
- 完整复制文件属性
二、完整解决方案
import os import re import shutil def rename_and_copy_mp4_files(source_dir, target_dir): """智能重命名并复制视频文件 Args: source_dir (str): 源目录路径 target_dir (str): 目标目录路径 """ # 创建目标目录(自动处理已存在情况) os.makedirs(target_dir, exist_ok=True) # 遍历源目录所有文件 for filename in os.listdir(source_dir): # 使用正则表达式解析文件名 pattern_match = re.match(r'\[(\d+)\](.+)\.(mp4|avi|mov)$', filename, re.IGphpNORECASE) if pattern_match: # 提取文件名组件 file_number = pattern_match.group(1) file_content = pattern_match.group(2).strip() file_ext = pattern_match.group(3).lower() # 格式化数字编号(4位补零) formatted_number = file_number.zfill(4) # 构建新文件名 new_filename = f"{formatted_number}_{file_content}.{file_ext}" # 构建完整路径 src_path = os.path.join(source_dir, filename) dst_path = os.path.join(target_dir, new_filename) # 执行带元数据的复制China编程操作 shutil.copy2(src_path, dst_path) print(f"成功处理:{filename} → {new_filename}") else: print(f"跳过非标准文件:{filename}") if __name__ == "__main__": # 配置路径(根据实际情况修改) SOURCE_DIR = r"E:\video_source" TARGET_DIR = r"E:\video_organized" rename_and_copy_mChina编程p4_files(SOURCE_DIR, TARGET_DIR)
三、关键技术解析
1. 智能路径处理
os.makedirs(target_dir, exist_ok=True)
exist_ok=True
参数确保:
- 目标目录不存在时自动创建
- 目录已存在时不报错
- 自动处理多级目录创建
2. 精准文件名匹配
r'\[(\d+)\](.+)\.(mp4|avi|mov)$'
正则表达式分解:
- \[(\d+)\] 捕获方括号内的数字
- (.+) 捕获任意长度内容(至少1个字符)
- (mp4|avi|mov)$ 支持多种视频格式
- re.IGNORECASE 忽略大小写
支持匹配的格式:
- [123] 教程.mp4
- [45]advanced.MOV
- [6]测试文件.AVI
3. 数字格式化
file_number.zfill(4)
转换示例:
- “1” → “0001”
- “23” → “0023”
- “156” → “0156”
4. 安全文件复制
shutil.copy2(srjsc, dst)
与普通复制的区别:
- 保留原始创建时间
- 保留最后修改时间
- 保留文件权限设置
- 保留其他元数据
四、使用指南
准备步骤
配置示例
# Windows系统示例 SOURCE_DIR = r"E:\training_videos" TARGET_DIR = r"D:\sorted_videos" # MACOS/linux示例 # SOURCE_DIR = "/Users/username/Videos/source" # TARGET_DIR = "/Volumes/external_drive/sorted_videos"
执行效果
原始文件 | 生成文件 |
---|---|
[1]介绍.mp4 | 0001_介绍.mp4 |
[23]基础课.avi | 0023_基础课.avi |
[156]项目实战.mov | 0156_项目实战.mov |
五、高级扩展建议
1. 添加进度提示
# 在循环开始前添加 total_files = len([f for f in os.listdir(source_dir) if f.endswith(('.mp4', '.avi', '.mov'))]) processed = 0 # 在处理成功时添加 processed += 1 print(f"进度:{processed}/{total_files} ({processed/total_files:.1%})")
2. 防覆盖机制
if os.path.exists(dst_path): base, ext = os.path.splitext(new_filename) counter = 1 while os.path.exists(dst_path): new_filename = f"{base}_{counter}{ext}" dst_path = os.path.join(target_dir, new_filename) counter += 1
3. 多线程加速
from concurrent.futures import ThreadPoolExecutor def process_file(filename): # 原处理逻辑 with ThreadPoolExecutor(max_workers=4) as executor: executor.map(process_file, os.listdir(source_dir))
六、注意事项
路径格式验证
• Windows路径使用反斜杠r"E:\path"
• 其他系统使用正斜杠"/path/to/files"
权限问题
• 确保对源目录有读取权限
• 确保对目标目录有写入权限特殊字符处理
• 自动跳过包含非法字符的文件
• 可添加字符过滤逻辑:
file_content = re.sub(r'[<>:"/\\|?*]', '', file_content)
性能优化
• 万级以上文件建议添加:
◦ 进度条显示
◦ 错误日志记录
◦ 断点续传功能
七、总结
通过这个Python脚本,我们实现了:
- 批量处理视频文件
- 智能规范编号格式
- 安全保留原始文件
- 快速部署使用
扩展应用场景:
- 整理教学视频库
- 规范监控录像存档
- 管理影视素材资源
- 自动化测试视频处理
以上就是通过Python脚本批量复制并规范命名视频文件的详细内容,更多关于Python复制并重命名视频文件的资料请关注编程China编程(www.chinasem.cn)其它相关文章!
这篇关于通过Python脚本批量复制并规范命名视频文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!