Python将文件名中含有指定字段的文件复制到对应路径下

2024-09-09 16:33:16 1点赞 16收藏 0评论

  本文介绍基于Python语言,读取一个文件夹,并将其中每一个子文件夹符合名称要求文件加以筛选,并将筛选得到的文件复制到另一个目标文件夹中的方法。

  本文的需求是:现在有一个大的文件夹,其中含有多个子文件夹,如下图所示。

Python将文件名中含有指定字段的文件复制到对应路径下

  对于其中的每一个子文件夹,都含有大量的文件;例如,我们就打开上图中的2021文件夹,得到结果如下图所示。

Python将文件名中含有指定字段的文件复制到对应路径下

  我们的需求是,希望基于每一个子文件夹内的每一个文件,将文件名称中含有指定字段的文件提取出来——在本文中,我们就希望提取得到文件名称中含有STB字段的,也就是上图紫色框内出现STB的文件是我们需要的。提取到全部符合要求的文件后,我们还需要将这些文件都复制到另一个目标文件夹中。

  明确了需求,接下来就可以开始代码的撰写。本文所用到的代码如下所示。

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Oct 2 12:48:49 2023 @author: fkxxgis """ import os import shutil source_folder = "/media/dell/H30-35/GF_SR" target_folder = "/media/dell/H30-35/GF_SR/STB" if not os.path.exists(target_folder): os.makedirs(target_folder) year_folders = [f for f in os.listdir(source_folder) if os.path.isdir(os.path.join(source_folder, f))] for year_folder in year_folders: if year_folder == "STB": continue year_folder_path = os.path.join(source_folder, year_folder) for file_name in os.listdir(year_folder_path): if "STB" in file_name: source_file = os.path.join(year_folder_path, file_name) target_file = os.path.join(target_folder, file_name) shutil.copy(source_file, target_file)

  其中,我们导入了osshutil模块,它们都提供了处理文件和目录的功能;同时,我们定义了源文件夹路径source_folder(也就是存储有多个子文件夹的文件夹路径)和目标文件夹路径target_folder(也就是最终结果存放的路径)。

  随后,我们使用os.makedirs()函数检查目标文件夹是否存在,如果不存在则创建它。接下来,我们使用列表推导式生成一个包含源文件夹中所有子文件夹的列表year_folders;其中,我们使用了os.listdir()函数获取源文件夹中的所有文件和文件夹,并使用os.path.isdir()函数判断是否为文件夹。

  接下来,我们就开始遍历每个子文件夹。首先,需要注意的是,我们要检查当前遍历的子文件夹是否为我们的目标文件夹路径STB;如果是,则跳过该子文件夹的处理——这一步骤是防止我们用来存放结果的目标文件夹也被遍历,否则就会出现文件复制冲突。

  其次,构建当前遍历的子文件夹的完整路径year_folder_path,并使用os.listdir()函数获取子文件夹中的所有文件。随后,再遍历刚刚得到的子文件夹中的每个文件——如果文件名包含STB,那么这个文件就是我们需要的文件;我们就构建源文件(待复制的文件)的完整路径source_file目标文件(预计复制完毕的文件)的完整路径target_file,并紧接着使用shutil.copy()函数将源文件复制到目标文件。

  通过这样的遍历,我们就能够将源文件夹路径source_folder中全部含有STB字段的文件复制到我们的目标文件夹中了。

  执行上述代码,即可在我们的目标文件夹中看到全部含有STB字段的文件,如下图所示。

Python将文件名中含有指定字段的文件复制到对应路径下

  至此,大功告成。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

微软在线发 office365个人版microsoft365续费office365拼车共享 Microsoft365一年共享服务 密钥-在线直发咚咚聊天窗口

微软在线发 office365个人版microsoft365续费office365拼车共享 Microsoft365一年共享服务 密钥-在线直发咚咚聊天窗口

59元起

Microsoft 微软 365 家庭版 30月

Microsoft 微软 365 家庭版 30月

548元起

任天堂Switch游戏 NS塞尔达传说 荒野之息 旷野之息 中文现货

任天堂Switch游戏 NS塞尔达传说 荒野之息 旷野之息 中文现货

298元起

任天堂Nintendo Switch 塞尔达传说 天空之剑 盒装版游戏实体卡带 海外版卡带

任天堂Nintendo Switch 塞尔达传说 天空之剑 盒装版游戏实体卡带 海外版卡带

178元起

深信服科技(SANGFOR) OSM-1000-B1150运维管理系统

深信服科技(SANGFOR) OSM-1000-B1150运维管理系统

暂无报价

Microsoft 微软 618活动大券加跨店满减 微软 MAC专用办公软件office2019永久版

Microsoft 微软 618活动大券加跨店满减 微软 MAC专用办公软件office2019永久版

259元起

微软在线发 多年office365家庭版个人版续费新订microsoft365订阅密钥 Microsoft365 个人版 一年 密钥-在线直发咚咚聊天窗口领取

微软在线发 多年office365家庭版个人版续费新订microsoft365订阅密钥 Microsoft365 个人版 一年 密钥-在线直发咚咚聊天窗口领取

209元起

Microsoft 微软 365家庭版一年

Microsoft 微软 365家庭版一年

259元起

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

暂无报价

Nintendo 任天堂 Switch游戏卡带《大航海时代4 威力加强版 HD》 中文

Nintendo 任天堂 Switch游戏卡带《大航海时代4 威力加强版 HD》 中文

196元起

猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)

猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)

暂无报价

Microsoft 微软 15月 微软office365家庭版microsoft365增强版

Microsoft 微软 15月 微软office365家庭版microsoft365增强版

279元起

《Nebo》触屏笔记类软件 Windows版

《Nebo》触屏笔记类软件 Windows版

暂无报价

微软支持重装绑 office2021永久激活码2019终身版macoffice软件 Office2021小型企业版for Mac

微软支持重装绑 office2021永久激活码2019终身版macoffice软件 Office2021小型企业版for Mac

529元起

Microsoft 微软 618一次付款终身使用苹果M1M2办公软件 Office2016小型企业版 MAC专用

Microsoft 微软 618一次付款终身使用苹果M1M2办公软件 Office2016小型企业版 MAC专用

159元起

Microsoft 微软 618活动开始到手15元/月 office365个人版续费新订microsoft365个

Microsoft 微软 618活动开始到手15元/月 office365个人版续费新订microsoft365个

249元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
16
扫一下,分享更方便,购买更轻松