欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)遍歷子文件夾并將文件復(fù)制到不同的目標(biāo)文件夾

 更新時(shí)間:2023年08月17日 09:44:57   作者:瘋狂學(xué)習(xí)GIS  
這篇文章主要介紹了如何基于Python語(yǔ)言實(shí)現(xiàn)遍歷多個(gè)子文件夾,將每一個(gè)子文件夾中大量的文件,按照每一個(gè)文件的文件名稱的特點(diǎn)復(fù)制到不同的目標(biāo)文件夾中,感興趣的可以了解下

本文介紹基于Python語(yǔ)言,遍歷一個(gè)大文件夾中大量的子文件夾,并將每一個(gè)子文件夾中大量的文件,按照每一個(gè)文件的文件名稱的特點(diǎn)與差異,自動(dòng)創(chuàng)建多個(gè)目標(biāo)文件夾,并將指定文件復(fù)制到不同的目標(biāo)文件夾中的方法。

首先,我們來(lái)明確一下本文的需求。現(xiàn)在有一個(gè)大文件夾,其中具有多個(gè)表示年份子文件夾,每一個(gè)子文件夾對(duì)應(yīng)一個(gè)年份;如下圖所示。

其次,在每一個(gè)表示年份子文件夾中,同樣具有著大量的子文件夾,此時(shí)每一個(gè)子文件夾表示一個(gè)天數(shù);以上圖中的 2018 文件夾為例,將其打開(kāi)后,如下圖所示。

隨后,每一個(gè)表示天數(shù)子文件夾中,就是我們希望加以提取、復(fù)制的文件了(在本中,就是一些 .tif 格式的遙感影像文件;如果大家需要復(fù)制其他格式的文件,思路和本文也都是一致的);我們以 2018 文件夾中的 001 子文件夾為例,將其打開(kāi)后如下圖所示。但是,這些文件自身還有一定特征——首先,如下圖左側(cè)綠色框內(nèi)的部分所示,這些遙感影像文件來(lái)自不同的分幅,而這一部分的文字就是表示了他的分幅;我們希望,將同一個(gè)分幅所有遙感影像文件在后期復(fù)制到同一個(gè)文件夾內(nèi)(比如所有名稱帶有 50TMK 字樣的遙感影像文件,都放在名稱為 50TMK 的目標(biāo)文件夾中);其次,那些以 _QC.tif 字段結(jié)尾的遙感影像我們都不需要,無(wú)需復(fù)制,只復(fù)制不帶 _QC 字段的遙感影像文件即可。

明確了需求,我們就可以開(kāi)始代碼的撰寫。

# -*- 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 分別指定了源文件夾(就是存放有原始遙感影像文件的大文件夾)和目標(biāo)文件夾(也就是我們希望將遙感影像復(fù)制到的結(jié)果文件夾)的路徑。

隨后,我們通過(guò) for year_folder in os.listdir(source_folder): 遍歷源文件夾中,表示年份的子文件夾。其后的 year_path = os.path.join(source_folder, year_folder) 用來(lái)生成年份子文件夾的完整路徑。同時(shí)可以通過(guò)一個(gè) if 語(yǔ)句來(lái)加以判斷——如果當(dāng)前路徑不是文件夾,則跳過(guò)本次循環(huán)。隨后,通過(guò)類似的方式,遍歷當(dāng)前年份子文件夾中的天數(shù)子文件夾。

接下來(lái),就可以通過(guò) for image_file in os.listdir(day_path): 來(lái)遍歷當(dāng)前天數(shù)子文件夾中的文件。在這里,我們需要加以判斷——如果文件名以 NDVI.tif 結(jié)尾,表示這是我們想要的遙感影像文件。

其次, index = image_file[-25 : -20] 則是用來(lái)從文件名中提取索引,這個(gè)索引就是遙感影像的分幅,我們將其提取出來(lái),用來(lái)構(gòu)建不同分幅對(duì)應(yīng)的目標(biāo)文件夾。其后面的一個(gè)判斷 if not os.path.isdir(os.path.join(target_folder, index)): ,就是檢查每一個(gè)遙感影像的分幅,如果這一分幅對(duì)應(yīng)的目標(biāo)路徑不存在,創(chuàng)建對(duì)應(yīng)的目錄結(jié)構(gòu)。

最后,我們使用 shutil 庫(kù)的 copy 函數(shù),將遙感影像文件復(fù)制到對(duì)應(yīng)的目標(biāo)路徑內(nèi)。

運(yùn)行上述代碼,我們即可在目標(biāo)文件夾中,首先看到每一個(gè)分幅的對(duì)應(yīng)的子文件夾,如下圖所示(我這里就是只有 4 個(gè)分幅)。

而在每一個(gè)分幅子文件夾內(nèi),所有遙感影像都是這一分幅對(duì)應(yīng)的文件,如下圖所示。

至此,大功告成。

到此這篇關(guān)于Python實(shí)現(xiàn)遍歷子文件夾并將文件復(fù)制到不同的目標(biāo)文件夾的文章就介紹到這了,更多相關(guān)Python文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論