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

Python实现:将文件名匹配当日日期的文件移动至指定目录

实现遍历子目录并移动匹配当日日期的文件

没问题,我来帮你实现这个需求。下面是基于Python的解决方案,兼顾简洁性和灵活性,完全适配你的场景:

核心思路

  1. 遍历指定根目录下的所有子目录(支持递归或仅一级子目录)
  2. 筛选文件名包含当日日期的.TXT文件
  3. 将匹配的文件移动到目标目录,同时处理可能的重名问题

完整代码示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:33:14