Python实现:将文件名匹配当日日期的文件移动至指定目录
实现遍历子目录并移动匹配当日日期的文件
没问题,我来帮你实现这个需求。下面是基于Python的解决方案,兼顾简洁性和灵活性,完全适配你的场景:
核心思路
- 遍历指定根目录下的所有子目录(支持递归或仅一级子目录)
- 筛选文件名包含当日日期的
.TXT文件 - 将匹配的文件移动到目标目录,同时处理可能的重名问题
完整代码示例
import datetime import pathlib import shutil # 你已经实现的当日日期获取逻辑 data_oggi = datetime.datetime.today().strftime('%m-%d-%Y') # -------------------------- 配置路径 -------------------------- # 替换为你的实际根目录路径 root_directory = pathlib.Path("/path/to/your/root") # 替换为你的目标目录路径(要移动到的位置) target_directory = pathlib.Path("/path/to/your/target") # ------------------------------------------------------------- # 确保目标目录存在,不存在则自动创建(包括父目录) target_directory.mkdir(parents=True, exist_ok=True) # 选项1:递归遍历根目录下所有层级的子目录中的.TXT文件 for txt_file in root_directory.rglob("*.TXT"): # 检查文件名是否包含当日日期 if data_oggi in txt_file.name: # 处理目标目录重名文件(避免覆盖) target_file_path = target_directory / txt_file.name if target_file_path.exists(): # 给重复文件添加数字后缀 counter = 1 while target_file_path.exists(): target_file_path = target_directory / f"{txt_file.stem}_{counter}{txt_file.suffix}" counter += 1 # 执行移动操作 shutil.move(str(txt_file), str(target_file_path)) print(f"已成功移动文件: {txt_file.name} -> {target_file_path.name}") # -------------------------- 可选方案 -------------------------- # 选项2:仅遍历根目录下的一级子目录(不递归深层子目录) # for txt_file in root_directory.glob("*/.TXT"): # if data_oggi in txt_file.name: # # 后续逻辑同上 # pass
关键细节说明
- 路径处理:使用
pathlib模块(Python 3.4+内置)替代传统os模块,语法更直观,避免字符串拼接路径的错误 - 目录创建:
mkdir(parents=True, exist_ok=True)确保目标目录及所有父目录都被创建,且目录已存在时不会抛出异常 - 遍历模式:
rglob("*.TXT"):递归遍历所有层级的子目录,适合根目录下有多层子目录的场景glob("*/.TXT"):仅遍历根目录的直接子目录,完全匹配你的描述(root下包含dir1、dir2等子目录)
- 重名处理:代码中添加了自动给重复文件加数字后缀的逻辑,避免覆盖已有文件,你可以根据需求调整(比如直接覆盖、抛出提示等)
注意事项
- 请确保运行脚本的用户对源目录和目标目录有读写权限
- 替换代码中的
/path/to/your/root和/path/to/your/target为实际路径 - 如果需要移动其他格式的文件,修改
*.TXT为对应的后缀即可
内容的提问来源于stack exchange,提问作者Alessandro Lanciotti
相关产品推荐
相关产品推荐

