晋城市公共事业建设局网站,如何建站网站,制作公司网站怎样收费,wordpress自动内外网本文介绍基于Python语言#xff0c;读取一个文件夹#xff0c;并将其中每一个子文件夹内符合名称要求的文件加以筛选#xff0c;并将筛选得到的文件复制到另一个目标文件夹中的方法。 本文的需求是#xff1a;现在有一个大的文件夹#xff0c;其中含有多个子文件夹#x… 本文介绍基于Python语言读取一个文件夹并将其中每一个子文件夹内符合名称要求的文件加以筛选并将筛选得到的文件复制到另一个目标文件夹中的方法。 本文的需求是现在有一个大的文件夹其中含有多个子文件夹如下图所示。 对于其中的每一个子文件夹都含有大量的文件例如我们就打开上图中的2021文件夹得到结果如下图所示。 我们的需求是希望基于每一个子文件夹内的每一个文件将文件名称中含有指定字段的文件提取出来——在本文中我们就希望提取得到文件名称中含有STB字段的也就是上图紫色框内出现STB的文件是我们需要的。提取到全部符合要求的文件后我们还需要将这些文件都复制到另一个目标文件夹中。 明确了需求接下来就可以开始代码的撰写。本文所用到的代码如下所示。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-Created on Mon Oct 2 12:48:49 2023author: fkxxgis
import os
import shutilsource_folder /media/dell/H30-35/GF_SR
target_folder /media/dell/H30-35/GF_SR/STBif 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:continueyear_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)其中我们导入了os和shutil模块它们都提供了处理文件和目录的功能同时我们定义了源文件夹路径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字段的文件如下图所示。 至此大功告成。
欢迎关注疯狂学习GIS