Python遍历多个子文件夹并基于文件名特征将文件复制到不同的目标文件夹

news2024/10/6 18:34:27

  本文介绍基于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_foldertarget_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个分幅)。

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

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

目录 EFK安装部署 一、环境准备(所有主机) 1、主机初始化配置 2、配置主机名并绑定hosts,不同主机名称不同 3、主机配置初始化 4、部署docker环境 二、部署kubernetes集群 1、组件介绍 2、配置阿里云yum源 3、安装kubelet kubeadm …

《零基础7天入门Arduino物联网-05》电路基础知识下

配套视频课程:《零基础学Arduino物联网,入门到进阶》 配套课件资料获取:微联实验室 配套学习套件购买:淘宝搜索店铺【微联实验室】 电阻、电容、电感和二极管 电阻 电阻用于电路中,其主要功能在于控制电流的流动和阻…

开源低代码平台Openblocks

网友 HankMeng 想看低代码工具,正好手上有一个; 什么是 Openblocks ? Openblocks 是一个开发人员友好的开源低代码平台,可在几分钟内构建内部应用程序。 传统上,构建内部应用程序需要复杂的前端和后端交互,…

元宇宙展厅:打造新型“人货场”发展趋势

在过去几年,元宇宙的话题被多次提起,随着VR技术的不断发展,元宇宙营销逐步出圈,通过沉浸式、互动式的虚拟环境,为消费者打造更加身临其境的体验。 元宇宙展厅构建新型“人货场”关系,将商品搬进元宇宙空间是…

安卓纯代码布局开发游戏二:Android Studio开发环境搭建

1.Android Studio下载: Download Android Studio & App Tools - Android Developers 2.安装 安装过程非常简单,找到下载包,一直点Next即可。 3.下载Android SDK 第一次进入Android Studio默认会先下载Android SDK,笔者下载的Android SDK存…

SpringBoot集成KoTime

koTime是一个开源免费的springboot项目性能分析工具&#xff0c;通过追踪方法调用链路以及对应的运行时长快速定位性能瓶颈&#xff0c;除此之外&#xff0c;代码热更新、异常检测都可以有&#xff01; 一.添加KoTime依赖&#xff1a; <dependency><groupId>cn.l…

【深度学习--RNN 循环神经网络--附LSTM情感文本分类】

deep learning 系列 --RNN 循环神经网络 什么是序列模型 包括了RNN LSTM GRU等网络模型&#xff0c;主要用途是自然语言处理、语音识别等方面&#xff0c;比如生成乐曲&#xff0c;音频转换为文字&#xff0c;文本情感分类&#xff0c;机器翻译等等 标准模型的缺陷 以往的标…

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

场景 Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览&#xff1a; Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景…

ppt中线材相交接的地方,如何绘画

ppt中线材相交接的地方&#xff1a; 在ppt中绘画线材相互交接的地方&#xff1a; 1.1绘图工具中的“弧形” 1.2小技巧 “弧形”工具点一下&#xff0c;在ppt中如下 1.3拖动活动点进行调整图形 1.4绘画圆弧 1.5调整“圆弧”的大小&#xff0c;鼠标放在“黄色点”位置&#xf…

爬虫逆向实战(十七)--某某丁简历登录

一、数据接口分析 主页地址&#xff1a;某某丁简历 1、抓包 通过抓包可以发现数据接口是submit 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个enPassword加密参数 请求头是否加密&#xff1f; 通过查看请求头可以发现有一个To…

React 高阶组件(HOC)

React 高阶组件(HOC) 高阶组件不是 React API 的一部分&#xff0c;而是一种用来复用组件逻辑而衍生出来的一种技术。 什么是高阶组件 高阶组件就是一个函数&#xff0c;且该函数接受一个组件作为参数&#xff0c;并返回一个新的组件。基本上&#xff0c;这是从 React 的组成…

部署MES管理系统首先要解决什么问题

随着制造业市场竞争的加剧&#xff0c;企业需要更加高效、灵活的生产运营&#xff0c;以提高产品质量和降低成本。在这种情况下&#xff0c;MES管理系统解决方案成为许多企业的选择。然而&#xff0c;在部署MES管理系统之前&#xff0c;必须首先解决一些关键问题&#xff0c;以…

ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考

文章目录 一、前言二、问题描述三、问题解决四、拓展阅读五、拓展阅读 一、前言 在应用RN开发跨平台APP阶段&#xff0c;从git中拉取项目&#xff0c;应用Jenkins进行组包时&#xff0c;发现最终生成的ipa安装包版本号始终与项目中设置的版本号不一致。 二、问题描述 经过仔…

常见排序集锦-C语言实现数据结构

目录 排序的概念 常见排序集锦 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 hoare 挖坑法 前后指针法 非递归 7.归并排序 非递归 排序实现接口 算法复杂度与稳定性分析 排序的概念 排序 &#xff1a;所谓排序&#xff0c;就是使一串记录&#…

PHP 报修管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 报修管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址&#xff1a; https://download.csdn.net/download/qq_41221322/88209950 视…

一次网络不通 “争吵” 引发的思考

为啥争吵&#xff0c;吵什么&#xff1f; "你到底在说什么啊&#xff0c;我 K8s 的 ecs 节点要访问 clb 的地址不通和本地网卡有什么关系..." 气愤语气都从电话那头传了过来&#xff0c;这时电话两端都沉默了。过了好一会传来地铁小姐姐甜美的播报声打断了刚刚的沉寂…

【校招VIP】java语言考点之List和扩容

考点介绍&#xff1a; List是最基础的考点&#xff0c;但是很多同学拿不到满分。本专题从两种实现子类的比较&#xff0c;到比较复杂的数组扩容进行分析。 『java语言考点之List和扩容』相关题目及解析内容可点击文章末尾链接查看&#xff01;一、考点题目 1、以下关于集合类…

仪表板展示 | DataEase看中国:2023年中国电影市场分析

背景介绍 随着《消失的她》、《变形金刚&#xff1a;超能勇士崛起》、《蜘蛛侠&#xff1a;纵横宇宙》、《我爱你》等国内外影片的上映&#xff0c;2023年上半年的电影市场也接近尾声。据国家电影专资办初步统计&#xff0c;上半年全国城市院线票房达262亿元&#xff0c;已经超…

气象监测站:用科技感知气象变化

气象监测站是利用科学技术感知当地小气候变化情况的气象观测仪器&#xff0c;可用于农业、林业、养殖业、畜牧业、环境保护、工业等多个领域&#xff0c;提高对环境数据的利用率&#xff0c;促进产业效能不断提升。 气象监测站主要由气象传感器、数据传输系统、电源系统、支架…

Python web实战之Django 的跨站点请求伪造(CSRF)保护详解

关键词&#xff1a;Python、Web、Django、跨站请求伪造、CSRF 大家好&#xff0c;今天我将分享web关于安全的话题&#xff1a;Django 的跨站点请求伪造&#xff08;CSRF&#xff09;保护&#xff0c;介绍 CSRF 的概念、原理和保护方法. 1. CSRF 是什么&#xff1f; CSRF&#…