国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3.遍歷某文件夾提取特定文件名的實例

2020-02-22 23:52:05
字體:
來源:轉載
供稿:網友

批量處理文件時,常需要先遍歷某個路徑提取特定條件的文件名。這篇寫一個暴力遍歷但很簡潔的方法,真的非常簡潔但是非常暴力。

例子目標是:獲得存放遙感數據的文件夾下文件夾名以“_BAD”結尾的文件夾內容。因為該文件下分級很多(年/月/產品類型/),目標文件夾很多且存在在最后一級,手動查看很煩。

代碼如下(知識點總結代碼后):

# -*- coding: utf-8 -*-"""遍歷某路徑下所有文件夾,獲得特定文件夾下所有文件很暴力,真的遍歷了所有的文件夾20180124@author: 墨大寶"""import osTARGETPATH = r'F:/MODIS_DATA'records = []for currentDir, _, includedFiles in os.walk(TARGETPATH): if not currentDir.endswith('_BAD'): continue else:  records.append(currentDir) # 將以“_BAD”結尾的文件夾名加入records  records.extend(includedFiles) # 將該文件夾內的文件名列表擴展到records# 將records寫入.txttxtFile = open(os.path.join(TARGETPATH, '02_04_BAD.txt'), 'w')txtFile.write(os.linesep.join(records))txtFile.close()# 將排序后的records寫入.txtwith open(os.path.join(TARGETPATH, '02_04_BAD_SORTED.txt'), 'w') as txtFile: txtFile.write('/n'.join(sorted(records)))

os.walk()返回Directory tree generator。每次生成格式為(dirpath, dirnames, filenames) 的tuple,元素依次是當前路徑、當前路徑下文件夾列表、當前路徑下文件名列表。

list的.append()、.extend()和.sort()方法都是原地修改,sorted()函數不是。

將list寫入.txt文件時需要把list轉為str,直接用str()函數強轉會很丑,用換行符連接list每個元素會好看很多。

os.path代表系統換行符,windows下為”/r/n”,其他系統多是”/n”。然而無論是用os.path還是”/n”連接列表元素,最后用windows記事本打開都一樣換行,但是用vs code打開的話os.path會多換一行即看上去一行間一行,這里面到底為啥有點說到,可能和Python的write機制有關,暫時不深究(留坑)。

關于文件讀寫,大多數資料推薦with as形式,確實更簡潔一點。

PS:

說os.walk()暴力是因為它真的按照目錄樹遍歷了所給路徑中的所有文件夾和文件,文件量大而所要找的文件名少的情況下會慢一些(其實我覺得慢不了多少),用os.listdir()寫成遞歸函數的話執行效率可能會高一些,但是os.walk()邏輯簡單好寫,各位隨意,我干了!

以上這篇Python3.遍歷某文件夾提取特定文件名的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 体育| 缙云县| 呼伦贝尔市| 邓州市| 青龙| 钟山县| 周宁县| 牙克石市| 习水县| 建湖县| 五莲县| 富民县| 楚雄市| 高州市| 政和县| 舟山市| 洛隆县| 济宁市| 大宁县| 黑山县| 宁南县| 黄平县| 仙居县| 潮州市| 靖州| 武宁县| 黄大仙区| 鹤壁市| 邹城市| 原平市| 全州县| 湖南省| 惠来县| 鄱阳县| 徐汇区| 武隆县| 冀州市| 石台县| 锦屏县| 长治县| 吴旗县|