Python實(shí)現(xià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)文章
python使用Plotly創(chuàng)建交互式數(shù)據(jù)可視化的操作步驟
Python 的 Plotly 庫是創(chuàng)建這種交互式可視化的強(qiáng)大工具,它提供了豐富的圖表類型和易于使用的接口,本文將探討如何使用 Plotly 創(chuàng)建交互式數(shù)據(jù)可視化,包括代碼實(shí)例和深入的解釋,需要的朋友可以參考下2024-08-08pytorch lstm gru rnn 得到每個state輸出的操作
這篇文章主要介紹了pytorch lstm gru rnn 得到每個state輸出的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Python實(shí)戰(zhàn)之實(shí)現(xiàn)簡單的名片管理系統(tǒng)
這篇文章主要介紹了Python實(shí)戰(zhàn)之實(shí)現(xiàn)簡單的名片管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Python實(shí)現(xiàn)的連接mssql數(shù)據(jù)庫操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)的連接mssql數(shù)據(jù)庫操作,結(jié)合實(shí)例形式分析了Python安裝pymssql模塊以及基于pymssql模塊連接sql2008 R2數(shù)據(jù)庫的具體操作技巧,需要的朋友可以參考下2018-08-08OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換
在OpenCV中,我們通過cv2.dft()來實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來實(shí)現(xiàn)逆傅里葉變換。本文就詳細(xì)的介紹一下這兩種用法,感興趣的可以了解一下2021-06-06python如何求取指定范圍內(nèi)的質(zhì)數(shù)
這篇文章主要介紹了python如何求取指定范圍內(nèi)的質(zhì)數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08淺析Python中Generator的工作原理與應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Python中Generator的工作原理與應(yīng)用的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編?一起學(xué)習(xí)一下2024-12-12詳解python的sorted函數(shù)對字典按key排序和按value排序
這篇文章主要介紹了詳解python的sorted函數(shù)對字典按key排序和按value排序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08