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

如何使用shutil复制文件名含functional但未知完整名称的文件?

基于文件名关键字复制文件的解决方案

你可以通过文件匹配+循环遍历的方式解决这个问题,不用纠结日期变量,直接根据文件名包含functional的条件筛选文件即可,下面是两种实用方法:

方法一:用glob模块快速匹配文件

glob模块支持通配符匹配,能直接递归查找所有符合条件的文件,代码简洁高效:

import os
import shutil
from glob import glob

# 替换成你的源文件根目录和目标文件夹路径
source_root = "/path/to/your/source/folders"
dest_folder = "/path/to/your/destination"

# 确保目标文件夹存在,不存在则创建
os.makedirs(dest_folder, exist_ok=True)

# 递归查找所有子文件夹中文件名包含'functional'的文件
matched_files = glob(os.path.join(source_root, "**", "*functional*"), recursive=True)

# 循环复制每个匹配到的文件
for file_path in matched_files:
    shutil.copy(file_path, dest_folder)

代码说明:

  • os.path.join:跨平台拼接路径,避免Windows和Linux路径格式冲突
  • **:匹配任意层级的子文件夹
  • *functional*:匹配文件名任意位置包含functional的文件
  • recursive=True:开启递归遍历,会扫遍source_root下所有子文件夹

方法二:用os.walk遍历筛选文件

如果你想更灵活控制遍历过程,用os.walk逐个检查文件:

import os
import shutil

source_root = "/path/to/your/source/folders"
dest_folder = "/path/to/your/destination"

os.makedirs(dest_folder, exist_ok=True)

# 遍历源目录下所有文件和子文件夹
for root, _, files in os.walk(source_root):
    for file_name in files:
        # 判断文件名是否包含'functional'
        if "functional" in file_name:
            src_file = os.path.join(root, file_name)
            shutil.copy(src_file, dest_folder)

注意事项:

  • 如果目标文件夹存在同名文件,shutil.copy会直接覆盖,若要避免覆盖,可以在复制前检查目标路径是否存在:
    dest_file = os.path.join(dest_folder, file_name)
    if not os.path.exists(dest_file):
        shutil.copy(src_file, dest_folder)
    
  • 若需要保留原文件夹结构复制,改用shutil.copy2或者手动创建对应子文件夹后复制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:15:01