亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python遍歷目錄中的所有文件的方法

 更新時(shí)間:2016年07月08日 16:42:23   作者:linda1000  
Pyhton中我們一般使用os.walk生成器來(lái)獲取文件夾中的所有文件,這里我們就來(lái)詳細(xì)看一下Python遍歷目錄中的所有文件的方法,包括一個(gè)進(jìn)階的利用fnmatch模塊進(jìn)行匹配的方法:

os.walk生成器
os.walk(PATH), PATH是個(gè)文件夾路徑,當(dāng)然可以用.或者../這樣啦.
返回的是個(gè)三元元組為元素的列表, 每個(gè)元素代表了一個(gè)文件夾下的內(nèi)容.第一個(gè)就是當(dāng)前文件夾下內(nèi)容.
返回的三元元組代表(該工作文件夾, 該文件夾下的文件夾的列表, 該文件夾下文件的列表).
所以,
獲得所有子文件夾, 就是(d代表這三元元組):

os.path.join(d[0],d[1]);

獲得所有子文件, 就是:

 os.path.join(d[0],d[2]);

以下例子使用了兩套循環(huán), 遍歷后得到所有文件名的list后再循環(huán)所有文件:

result = [os.path.join(dp, f) for dp, dn, fs in os.walk("_pages") for f in fs if os.path.splitext(f)[1] == '.html']
for fname in result:
 #do something

實(shí)際等于

result=[]
for dp, dn, fs in os.walk("_pages"):
 for f in fs:
 if (os.path.splitext(f)[1] == '.html'):
  result.append(os.path.join(dp, f))
for fname in result:
 #do something

最后判斷是否html后綴獲得文件名, 還可以使用glob:

result = [y for x in os.walk(PATH) for y in glob.glob(os.path.join(x[0], '*.txt'))]

還可以使用迭代器方法:

from itertools import chain
import glob
result = (chain.from_iterable(glob.iglob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))

進(jìn)階
標(biāo)準(zhǔn)文件數(shù)遍歷生成器os.walk既強(qiáng)大又靈活,不過(guò)os.walk還缺乏應(yīng)用程序需要的一些細(xì)節(jié)上的處理能力,例如根據(jù)某種模式選擇文件,對(duì)所有文件(或目錄)進(jìn)行排序,或只遍歷當(dāng)前目錄不進(jìn)入其子目錄,因此需要對(duì)接口對(duì)應(yīng)進(jìn)行封裝。

import os, fnmatch 
 
def filter_files(dirname, patterns='*', single_level=False, yield_folders=False): 
  patterns = patterns.split(';') 
  allfiles = [] 
  for rootdir, subdirname, files in os.walk(dirname): 
    print subdirname 
    allfiles.extend(files) 
    if yield_folders: 
      allfiles.extend(dubdirname) 
    if single_level: 
      break 
  allfiles.sort() 
  for eachpattern in patterns: 
    for eachfile in fnmatch.filter(allfiles, eachpattern): 
        print os.path.normpath(eachfile) 

說(shuō)明:
1.extend與append的區(qū)別
列表是以類的形式實(shí)現(xiàn)的?!皠?chuàng)建”列表實(shí)際上是將一個(gè)類實(shí)例化。因此,列表有多種方法可以操作。  列表可包含任何數(shù)據(jù)類型的元素,單個(gè)列表中的元素?zé)o須全為同一類型。 append() 方法向列表的尾部添加一個(gè)新的元素。只接受一個(gè)參數(shù),extend()方法只接受一個(gè)列表作為參數(shù),并將該參數(shù)的每個(gè)元素都添加到原有的列表中。
2. fnmatch模塊
fnmatch 模塊使用模式來(lái)匹配文件名。模式語(yǔ)法和 Unix shell 中所使用的相同. 星號(hào)(*) 匹配零個(gè)或更多個(gè)字符, 問(wèn)號(hào)(?) 匹配單個(gè)字符。你也可以使用方括號(hào)來(lái)指定字符范圍,例如 [0-9] 代表一個(gè)數(shù)字,其他所有字符都匹配它們本身。
1) fnmatch.fnmatch(name, pattern)方法:測(cè)試name是否匹配pattern,返回true/false
2) fnmatch.filter(names, pat)實(shí)現(xiàn)列表特殊字符的過(guò)濾或篩選,返回符合匹配模式的字符列表,當(dāng)然names表示的是列表

相關(guān)文章

  • Python操作Sonqube API獲取檢測(cè)結(jié)果并打印過(guò)程解析

    Python操作Sonqube API獲取檢測(cè)結(jié)果并打印過(guò)程解析

    這篇文章主要介紹了Python操作Sonqube API獲取檢測(cè)結(jié)果并打印過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)

    詳解Python利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù)

    在做一些python工具的時(shí)候,常常會(huì)碰到定時(shí)器問(wèn)題,總覺(jué)著使用threading.timer或者schedule模塊非常不優(yōu)雅。所以本文將利用APScheduler框架實(shí)現(xiàn)定時(shí)任務(wù),需要的可以參考一下
    2022-03-03
  • Python?NLP開(kāi)發(fā)之實(shí)現(xiàn)聊天機(jī)器人

    Python?NLP開(kāi)發(fā)之實(shí)現(xiàn)聊天機(jī)器人

    這篇文章主要為大家介紹了Python如何實(shí)現(xiàn)聊天機(jī)器人,即使用自然語(yǔ)言處理?(NLP)?來(lái)幫助用戶通過(guò)文本、圖形或語(yǔ)音與?Web?服務(wù)或應(yīng)用進(jìn)行交互,感興趣的可以了解一下
    2023-05-05
  • Python3 完全平方數(shù)案例

    Python3 完全平方數(shù)案例

    這篇文章主要介紹了Python3 完全平方數(shù)的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 在matplotlib中改變figure的布局和大小實(shí)例

    在matplotlib中改變figure的布局和大小實(shí)例

    這篇文章主要介紹了在matplotlib中改變figure的布局和大小實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python如何讀寫JSON格式數(shù)據(jù)

    Python如何讀寫JSON格式數(shù)據(jù)

    這篇文章主要介紹了Python如何讀寫JSON格式數(shù)據(jù),JSON文件的讀寫應(yīng)算成Python基礎(chǔ)知識(shí)的內(nèi)容,在編寫Nonebot插件時(shí),常常會(huì)操作JSON類型的數(shù)據(jù),需要的朋友可以參考下
    2023-04-04
  • Flask框架編寫文件下載接口過(guò)程講解

    Flask框架編寫文件下載接口過(guò)程講解

    這篇文章主要介紹了Flask框架編寫文件下載接口的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能示例

    Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)微信中找回好友、群聊用戶撤回的消息功能,結(jié)合實(shí)例形式分析了Python基于微信itchat模塊實(shí)現(xiàn)針對(duì)撤回消息的查看功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • tf.concat中axis的含義與使用詳解

    tf.concat中axis的含義與使用詳解

    今天小編就為大家分享一篇tf.concat中axis的含義與使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法

    Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法

    今天小編就為大家分享一篇Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論