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

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

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

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

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

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

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

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

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

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

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

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

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

至此,大功告成。

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

相關(guān)文章

最新評論