Python实现遍历子文件夹并将文件复制到不同的目标文件夹

 更新时间:2023年08月17日 09:44:57   作者:疯狂学习GIS  
这篇文章主要介绍了如何基于Python语言实现遍历多个子文件夹,将每一个子文件夹中大量的文件,按照每一个文件的文件名称的特点复制到不同的目标文件夹中,感兴趣的可以了解下

本文介绍基于Python语言,遍历一个大文件夹中大量的子文件夹,并将每一个子文件夹中大量的文件,按照每一个文件的文件名称的特点与差异,自动创建多个目标文件夹,并将指定文件复制到不同的目标文件夹中的方法。

首先,我们来明确一下本文的需求。现在有一个大文件夹,其中具有多个表示年份子文件夹,每一个子文件夹对应一个年份;如下图所示。

其次,在每一个表示年份子文件夹中,同样具有着大量的子文件夹,此时每一个子文件夹表示一个天数;以上图中的 2018 文件夹为例,将其打开后,如下图所示。

随后,每一个表示天数子文件夹中,就是我们希望加以提取、复制的文件了(在本中,就是一些 .tif 格式的遥感影像文件;如果大家需要复制其他格式的文件,思路和本文也都是一致的);我们以 2018 文件夹中的 001 子文件夹为例,将其打开后如下图所示。但是,这些文件自身还有一定特征——首先,如下图左侧绿色框内的部分所示,这些遥感影像文件来自不同的分幅,而这一部分的文字就是表示了他的分幅;我们希望,将同一个分幅所有遥感影像文件在后期复制到同一个文件夹内(比如所有名称带有 50TMK 字样的遥感影像文件,都放在名称为 50TMK 的目标文件夹中);其次,那些以 _QC.tif 字段结尾的遥感影像我们都不需要,无需复制,只复制不带 _QC 字段的遥感影像文件即可。

明确了需求,我们就可以开始代码的撰写。

# -*- coding: utf-8 -*-
"""
Created on Thu Aug 17 00:14:16 2023
@author: fkxxgis
"""
import os
import shutil
source_folder = "F:/ers"
target_folder = "F:/Beijing_Preprocessing"
for year_folder in os.listdir(source_folder):
    year_path = os.path.join(source_folder, year_folder)
    if not os.path.isdir(year_path):
        continue
    for day_folder in os.listdir(year_path):
        day_path = os.path.join(year_path, day_folder)
        if not os.path.isdir(day_path):
            continue
        for image_file in os.listdir(day_path):
            if image_file.endswith("NDVI.tif"):
                index = image_file[-25 : -20]
                source_image_path = os.path.join(day_path, image_file)
                target_image_path = os.path.join(target_folder, index, image_file)
                if not os.path.isdir(os.path.join(target_folder, index)):
                    os.makedirs(os.path.join(target_folder, index))
                shutil.copy(source_image_path, target_image_path)
                print(year_folder, " ", day_folder)

其中, source_folder target_folder 分别指定了源文件夹(就是存放有原始遥感影像文件的大文件夹)和目标文件夹(也就是我们希望将遥感影像复制到的结果文件夹)的路径。

随后,我们通过 for year_folder in os.listdir(source_folder): 遍历源文件夹中,表示年份的子文件夹。其后的 year_path = os.path.join(source_folder, year_folder) 用来生成年份子文件夹的完整路径。同时可以通过一个 if 语句来加以判断——如果当前路径不是文件夹,则跳过本次循环。随后,通过类似的方式,遍历当前年份子文件夹中的天数子文件夹。

接下来,就可以通过 for image_file in os.listdir(day_path): 来遍历当前天数子文件夹中的文件。在这里,我们需要加以判断——如果文件名以 NDVI.tif 结尾,表示这是我们想要的遥感影像文件。

其次, index = image_file[-25 : -20] 则是用来从文件名中提取索引,这个索引就是遥感影像的分幅,我们将其提取出来,用来构建不同分幅对应的目标文件夹。其后面的一个判断 if not os.path.isdir(os.path.join(target_folder, index)): ,就是检查每一个遥感影像的分幅,如果这一分幅对应的目标路径不存在,创建对应的目录结构。

最后,我们使用 shutil 库的 copy 函数,将遥感影像文件复制到对应的目标路径内。

运行上述代码,我们即可在目标文件夹中,首先看到每一个分幅的对应的子文件夹,如下图所示(我这里就是只有 4 个分幅)。

而在每一个分幅子文件夹内,所有遥感影像都是这一分幅对应的文件,如下图所示。

至此,大功告成。

到此这篇关于Python实现遍历子文件夹并将文件复制到不同的目标文件夹的文章就介绍到这了,更多相关Python文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python代码进行身份证号校验的实现示例

    使用python代码进行身份证号校验的实现示例

    这篇文章主要介绍了使用python代码进行身份证号校验的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python中字典的基本知识初步介绍

    Python中字典的基本知识初步介绍

    这篇文章主要介绍了Python中字典的基本知识初步介绍,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python地理地图可视化folium标记点弹窗设置代码(推荐)

    Python地理地图可视化folium标记点弹窗设置代码(推荐)

    这篇文章主要介绍了Python地理地图可视化folium标记点弹窗设置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python使用future处理并发问题方案详解

    Python使用future处理并发问题方案详解

    从Python3.2引入的concurrent.futures模块,Python2.5以上需要在pypi中安装futures包。future指一种对象,表示异步执行的操作。这个概念的作用很大,是concurrent.futures模块和asyncio包的基础
    2023-02-02
  • Python探索之爬取电商售卖信息代码示例

    Python探索之爬取电商售卖信息代码示例

    这篇文章首先简单介绍了网络爬虫的基本概念,然后向大家分享了一段有关爬取电商售卖信息的实例代码,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • python深度学习tensorflow实例数据下载与读取

    python深度学习tensorflow实例数据下载与读取

    这篇文章主要为大家介绍了python深度学习tensorflow实例数据下载与读取示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python进阶多线程爬取网页项目实战

    Python进阶多线程爬取网页项目实战

    这篇文章主要为大家介绍了Python进阶,Python多线程爬取网页项目实战的示例呈现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • python基础教程之csv格式文件的写入与读取

    python基础教程之csv格式文件的写入与读取

    逗号分隔值(Comma-Separated Values,CSV,也称为字符分隔值,分隔字符也可以不是逗号),新这篇文章主要给大家介绍了关于python基础教程之csv格式文件的写入与读取的相关资料,需要的朋友可以参考下
    2022-03-03
  • Python词云展示库wordcloud配置详解

    Python词云展示库wordcloud配置详解

    这篇文章主要介绍了Python词云展示库wordcloud配置详解,词云就是将词语通过图形可视化的方式,直观和艺术的展示出来,词云在我们的生活中经常能够看到,无论是中文的词云还是英文的词云,需要的朋友可以参考下
    2023-07-07
  • PyCharm导入python项目并配置虚拟环境的教程详解

    PyCharm导入python项目并配置虚拟环境的教程详解

    这篇文章主要介绍了Pycharm导入python项目并配置虚拟环境的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论