Python中如何用通配符查找匹配目录文件并复制到目标文件夹
解决方案
shutil 本身不支持通配符路径解析,你需要先通过通配符匹配出所有符合规则的文件绝对路径,再逐个执行复制操作,使用Python内置的glob模块即可实现通配符匹配需求。
修改后代码示例
import glob import shutil import os TargetFolder = r'C:\ELK\LOGS\ATH\DEST' # 确保目标文件夹存在,不存在则自动创建 os.makedirs(TargetFolder, exist_ok=True) for row in df.itertuples(): search_pattern = row.Search2 # 匹配所有符合通配符规则的文件,返回匹配成功的路径列表 matched_files = glob.glob(search_pattern) for file_path in matched_files: try: shutil.copy2(file_path, TargetFolder) except Exception as e: print(f"复制文件{file_path}失败:{e}")
补充说明
- 如果需要在指定目录及其子目录下递归匹配符合规则的文件,可将
glob.glob(search_pattern)替换为glob.glob(search_pattern, recursive=True),注意此时通配符规则需要包含**匹配多级目录,例如r'C:\folder1\**\A_1*_Z.txt' - 若你使用Python 3.4+,也可以用
pathlib模块实现匹配,写法更简洁:from pathlib import Path for row in df.itertuples(): search_pattern = row.Search2 pattern_path = Path(search_pattern) parent_dir = pattern_path.parent pattern = pattern_path.name # 匹配对应规则的文件 for file_path in parent_dir.glob(pattern): shutil.copy2(file_path, TargetFolder)
内容的提问来源于stack exchange,提问作者Kamikaze K
相关产品推荐
相关产品推荐

