日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 如何查找特定類型文件

瀏覽:13日期:2022-07-13 18:03:33

寫在之前

今天的文章是介紹如何用 Python 去定位特定類型的文件,會講到用字符串匹配文件名定位特定文件以及順帶介紹一下遍歷目錄樹的函數,通過今天的這一部分以及之前文章講到的文件獲取屬性的操作,可以做很多有意思的事情。

定位特定文件

定位特定的文件,可以使用 fnmatch 以及 glob 這兩個標準庫,我們下面來分別看一下。

1. 使用 fnmatch 標準庫

一般的話我們想要查找特定類型的文件,可以通過字符串的前綴匹配和后綴匹配來查找,具體實例如下所示:

>>> import os>>> [txt for txt in os.listdir(’.’) if txt.endswith(’.txt’)][’b.txt’, ’a.txt’]

其實大部分的情況下這種用字符串匹配的方法來查找文件就足夠可以滿足需要,如果有些情況下需要更加靈活一點的字符串匹配,就可以使用 fnmatch 庫,這是一個專門用來進行文件名匹配的庫,支持使用通配符來進行文字匹配(比如’*’,’?’等)。

fnmatch 這個庫很簡單,只有 4 個函數:fnmatch,fnmatchcase,filter,translate:

fnmatch:判斷文件名是否符合特定的模式; fnmatchcase:判斷文件名是否符合特定的模式(不區分大小寫); filter:返回輸入列表中,符合特定模式的文件名列表; translate:將通配符模式轉換成正則表達式。

上面 4 個最常用是它的同名函數 fnmatch ,我的當前目錄下有 4 個文件,分別是:a.txt,b.txt,c.py,test.py,下面我就用 fnmatch 函數來對當前目錄下的這 4 個文件進行匹配性測試,具體請看下面代碼:

>>> import os>>> import fnmatch>>> os.listdir(’.’)[’test.py’, ’c.py’, ’b.txt’, ’a.txt’]>>> [txt for txt in os.listdir(’.’) if fnmatch.fnmatch(txt, ’*.txt’)][’b.txt’, ’a.txt’]>>> [file for file in os.listdir(’.’) if fnmatch.fnmatch(file, ’[a-c]*’)][’c.py’, ’b.txt’, ’a.txt’]>>> [file for file in os.listdir(’.’) if fnmatch.fnmatch(file, ’[!a-c]*’)][’test.py’]

fnmatchcase 函數與 fnmatch 函數幾乎一樣,只是在匹配的時候會忽略大小寫字母;filter 函數與 fnmatch 比較類似,區別在于fnmatch 一次只對一個文件名匹配,而 filter 一次可以對多個文件名進行匹配判斷,下面我們就再來看一下 filter 的用法:

>>> import os>>> import fnmatch>>> file = os.listdir(’.’)>>> file[’test.py’, ’c.py’, ’b.txt’, ’a.txt’]>>> fnmatch.filter(file, ’[a-c]*’)[’c.py’, ’b.txt’, ’a.txt’]>>> fnmatch.filter(file, ’[!a-c]*’)[’test.py’]

2.使用 glob 定位

我們在上面介紹的獲取特定類型的文件列表,首先是通過 os.listdir 獲取全部的文件列表,然后通過字符串匹配或者使用 fnmatch 進行文件名模式匹配來定位,習慣了 Python 的簡潔優雅,這多出來的一步總覺得哪里怪怪的,好在我現在知道了 glob。

glob 的作用相當于 os.listdir + fnmatch 的組合,使用 glob 以后,就不需要用 os.listdir 獲取文件列表,直接通過模式匹配就可以解決了,具體操作如下所示:

>>> import glob>>> glob.glob(’*.txt’)[’b.txt’, ’a.txt’]>>> glob.glob(’[a-c]*’)[’c.py’, ’b.txt’, ’a.txt’]>>> glob.glob(’[!a-c]*’)[’test.py’]

可以看到,Python 真的非常的靈活,光是定位目錄下特定的文件類型我就已經介紹了 3 種方式,一般情況下就用字符串匹配就可以解決,如果需要更加靈活一點的的,可以使用 fnmatch 和 glob。

遍歷目錄樹

再上一節中我們都是查找某個目錄下的文件然后通過匹配去定位自己需要的文件類型。但是在實際的應用過程中我們更可能遇到的是某個目錄及其子目錄下的所有文件。比如查找某個目錄及其子目錄下所有的 txt 文件等等,對于這類的需求,我們可以使用 os 模塊下的「walk」函數。walk 函數遍歷某個目錄及其子目錄,對于每一個目錄,walk 返回一個三元組,依次是「當前目錄」,「當前目錄下的子目錄」,「當前目錄下的文件列表」。

下面我們來演示一下 os.walk 函數的用法,做一個小的練習,來遍歷一下 /root/rocky0429 目錄及其子目錄下的所有 txt 和 圖片文件:

import osimport fnmatchsearch = [’*.txt’, ’*.jpg’, ’*.jpeg’]res = []for root, dirnames, filenames in os.walk(os.path.expanduser(’~/rocky0429’)): for extension in search: for filename in fnmatch.filter(filenames, extension): res.append(os.path.join(root,filename)) print(res)

以上就是Python 如何查找特定類型文件的詳細內容,更多關于python 查找文件的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品国产一区二| 午夜久久中文| 午夜久久影院| 成人福利视频| 日韩黄色大片网站| 色一区二区三区四区| 日本不卡一区二区三区| 日韩一区二区三区四区五区| 亚洲精品欧美| 欧美日韩1区| 国产九一精品| 精品国产一级| 亚洲天堂1区| 五月精品视频| 蜜臀av亚洲一区中文字幕| 一本一道久久a久久| 日韩激情中文字幕| 国产欧美精品久久| 精品国产乱码| 欧美成a人免费观看久久| 美女网站一区| 美女尤物久久精品| 日韩精品社区| 久久伊人亚洲| 色爱综合av| 三级欧美韩日大片在线看| 亚洲精品三级| 国产精品xxx在线观看| 国产一区二区三区探花| 日韩影院二区| 免费视频久久| 久久国产三级| 国产亚洲一区二区手机在线观看| 91久久午夜| 日韩国产成人精品| 精品国产乱码久久久| 亚洲黄色中文字幕| 国产亚洲精品久久久久婷婷瑜伽| 亚洲精品免费观看| 精品视频一区二区三区在线观看| 99久久亚洲精品| 亚洲精品麻豆| 国产成人精品福利| 国产精品日韩久久久| 国产日韩欧美一区| 日韩免费福利视频| 日韩专区在线视频| 久久99久久人婷婷精品综合| 激情黄产视频在线免费观看| 国产一区二区高清| 麻豆中文一区二区| 国产综合精品一区| 国产亚洲精品精品国产亚洲综合| 免费污视频在线一区| 日韩影院精彩在线| 国产成人精品亚洲线观看| 久久国产成人| 国产aⅴ精品一区二区三区久久| 中国女人久久久| 成人国产精品久久| 中文精品电影| 中文在线а√天堂| 日本一不卡视频| 91精品蜜臀一区二区三区在线 | 免费精品一区| 久久精品99久久无色码中文字幕| 日韩av二区在线播放| 99久久夜色精品国产亚洲1000部 | 精品一区毛片| 久久一区亚洲| 亚洲日产国产精品| 蜜桃精品在线| 久久国产精品美女| 亚洲丝袜美腿一区| 亚洲成av在线| 国产精品亚洲一区二区在线观看| 欧美日韩日本国产亚洲在线| 另类欧美日韩国产在线| 一区二区国产精品| 一区二区三区四区日本视频| 国产精品久久乐| 免费成人性网站| 国产精品99一区二区| 精品一二三区| 欧美精品影院| 亚洲香蕉久久| 亚洲精品一区二区妖精| 国产+成+人+亚洲欧洲在线| 青草av.久久免费一区| 亚洲成人免费| 久久久精品日韩| 免费看一区二区三区| 日韩精品a在线观看91| 亚洲免费黄色| 成人影视亚洲图片在线| 国产人成精品一区二区三| 亚洲欧美成人综合| 亚洲一本视频| 成人污污视频| 欧美成人aaa| 日韩激情视频网站| 亚洲午夜免费| 美女国产一区| 国产毛片一区| 日韩视频一区| 女人av一区| 美女网站一区| 亚洲国产专区| 久久久成人网| 国产在线视频欧美一区| 国产日韩亚洲欧美精品| 日韩高清在线观看一区二区| 蜜桃一区二区三区在线| 好吊一区二区三区| 欧美亚洲激情| 欧美aa在线观看| 国产不卡av一区二区| 久久三级中文| 国产精品久久久久77777丨| 日韩欧美久久| 日韩精品91亚洲二区在线观看| 亚洲制服一区| 亚洲精品护士| 97久久中文字幕| 亚洲免费毛片| 日韩国产欧美在线视频| 亚洲制服欧美另类| 亚洲乱码一区| 日韩视频一二区| 日韩在线观看一区二区三区| 日韩欧美2区| 日韩精品免费视频人成 | 激情婷婷综合| 国户精品久久久久久久久久久不卡| 欧美日韩一二三四| 久久国产直播| 午夜久久福利| 欧美粗暴jizz性欧美20| 999久久久国产精品| 精品欧美一区二区三区在线观看| 免费在线小视频| 欧美日韩在线二区| 免费av一区二区三区四区| 精品一区免费| 中文字幕一区二区av| 亚洲精品系列| 国产情侣久久| 精品国产一区二区三区2021| 伊人久久在线| 激情综合亚洲| 亚洲在线久久| 国产日韩高清一区二区三区在线 | 日韩高清不卡在线| 国产麻豆一区| 精品久久电影| 国产成人精品亚洲日本在线观看| 欧美91视频| 亚洲精品韩国| 欧美国产先锋| 日本综合字幕| 亚洲女同中文字幕| 综合亚洲视频| 国产欧美一级| 亚洲综合电影| 蜜桃视频在线观看一区| 国产精品自在| 中文字幕人成乱码在线观看| 亚洲婷婷在线| 亚洲午夜国产成人| 欧美黑人巨大videos精品| 日韩av在线播放网址| 欧美特黄一级大片| 亚洲精品婷婷| 成人台湾亚洲精品一区二区| 九色精品91| 日韩国产91| 给我免费播放日韩视频| 99国产精品| 国产伦乱精品| 五月婷婷六月综合| 国产亚洲高清在线观看| 日韩在线免费| 视频一区中文字幕精品| 国内精品亚洲| 国产精品毛片| 国产精品成人一区二区网站软件| 91精品婷婷色在线观看| 日韩精品91亚洲二区在线观看| а√天堂中文在线资源8| 中文日韩欧美| 欧美日韩亚洲一区| 免费福利视频一区二区三区| 免费在线观看视频一区| 精品国产一区二区三区噜噜噜| 亚洲激情久久| 麻豆精品久久| 久久精品97| 欧美日韩国产免费观看| 欧美aⅴ一区二区三区视频| 免费国产自线拍一欧美视频|