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

使用Python从指定目录最新子文件夹复制匹配命名的xlsx文件至对应文件夹

实现指定文件的自动复制脚本

需求说明

  • 源目录路径:copyfrom = 'C:\Users\lexluthorella\Documents\Test_dir'
  • 目标目录路径:copyto = 'C:\Users\lexluthorella\Documents\Fake_sftp'
  • 源目录包含子文件夹:November-2022、December-2022、January-2023,需自动识别最新创建/修改的子文件夹
  • 目标目录包含子文件夹:Location A、Location B、Location C
  • 需将源目录最新子文件夹中,文件名包含目标子文件夹名称的.xlsx文件(例如Location A...-2023 Monthly file.xlsx),复制到对应的目标子文件夹中

完整代码实现

import os
import shutil

# 定义路径,使用原始字符串避免Windows转义字符问题
copyfrom = r'C:\Users\lexluthorella\Documents\Test_dir'
copyto = r'C:\Users\lexluthorella\Documents\Fake_sftp'

# 获取源目录下所有子文件夹的完整路径
subfolders = [f.path for f in os.scandir(copyfrom) if f.is_dir()]
# 按修改时间筛选出最新的子文件夹
latest_subfolder = max(subfolders, key=os.path.getmtime)

# 获取目标目录下所有子文件夹的名称(仅名称,不含完整路径)
target_folder_names = [f.name for f in os.scandir(copyto) if f.is_dir()]

# 遍历最新子文件夹中的所有文件
for filename in os.listdir(latest_subfolder):
    # 仅处理xlsx格式文件
    if filename.endswith('.xlsx'):
        # 检查文件名是否匹配目标子文件夹名称
        for target_name in target_folder_names:
            if target_name in filename:
                # 拼接源文件与目标文件的完整路径
                source_file_path = os.path.join(latest_subfolder, filename)
                target_file_path = os.path.join(copyto, target_name, filename)
                # 复制文件(保留原文件元数据)
                shutil.copy2(source_file_path, target_file_path)
                print(f"完成复制: {filename} -> {os.path.join(target_name, filename)}")

代码关键说明

  1. 路径处理:用原始字符串r''包裹Windows路径,避免转义字符引发的识别错误
  2. 最新文件夹筛选:通过os.scandir遍历子文件夹,结合os.path.getmtime(获取文件修改时间)和max函数,高效定位最新文件夹
  3. 文件匹配逻辑:提取目标子文件夹名称,遍历源文件夹中的xlsx文件,通过名称包含关系匹配对应目标路径
  4. 文件复制:使用shutil.copy2而非基础的shutil.copy,可保留原文件的修改时间、权限等元数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:33:22