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

python中遍歷文件的3個(gè)方法

 更新時(shí)間:2014年09月02日 12:02:32   投稿:junjie  
這篇文章主要介紹了python中遍歷文件的3個(gè)方法,本文分別使用os.path.walk()、os.walk()、os.listdir()來實(shí)現(xiàn),需要的朋友可以參考下

今天寫一個(gè)在windows下批量修改文件名的python腳本,用到文件的遍歷。用python進(jìn)行文件遍歷有多種方法,這里列舉并說明一下。

os.path.walk()

這是一個(gè)傳統(tǒng)的用法。

walk(root,callable,args)方法有三個(gè)參數(shù):要遍歷的目錄,回調(diào)函數(shù),回調(diào)函數(shù)的參數(shù)(元組形式)。

調(diào)用的過程是遍歷目錄下的文件或目錄,每遍歷一個(gè)目錄,調(diào)用回調(diào)函數(shù),并把a(bǔ)rgs作為參數(shù)傳遞給回調(diào)函數(shù)。

回調(diào)函數(shù)定義時(shí)也有三個(gè)參數(shù),比如示例中的func中的三個(gè)參數(shù),分別為walk傳來的參數(shù)、目錄的路徑、目錄下的文件列表(只有文件名,不是完整路徑)。請(qǐng)看示例:

復(fù)制代碼 代碼如下:

import os
s = os.sep #根據(jù)unix或win,s為\或/
root = "d:" + s + "ll" + s #要遍歷的目錄

def func(args,dire,fis): #回調(diào)函數(shù)的定義
    for f in fis:
        fname = os.path.splitext(f)  #分割文件名為名字和擴(kuò)展名的二元組
        new = fname[0] + 'b' + fname[1]  #改名字
        os.rename(os.path.join(dire,f),os.path.join(dire,new)) #重命名

os.path.walk(root,func,()) #遍歷

這種方法在使用時(shí)有個(gè)問題,不能遞歸遍歷下一層(這點(diǎn)我還不確定,歡迎指正)。

python的高級(jí)版本中加入了os.walk(),比這個(gè)好用。

os.walk()

原型為:os.walk(top, topdown=True, onerror=None, followlinks=False)

我們一般只使用第一個(gè)參數(shù)。(topdown指明遍歷的順序)
該方法對(duì)于每個(gè)目錄返回一個(gè)三元組,(dirpath, dirnames, filenames)。第一個(gè)是路徑,第二個(gè)是路徑下面的目錄,第三個(gè)是路徑下面的非目錄(對(duì)于windows來說也就是文件)。請(qǐng)看示例:

復(fù)制代碼 代碼如下:

import os
s = os.sep
root = "d:" + s + "ll" + s 

for rt, dirs, files in os.walk(root):
    for f in files:
        fname = os.path.splitext(f)
        new = fname[0] + 'b' + fname[1]
        os.rename(os.path.join(rt,f),os.path.join(rt,new))

這種方式可以遞歸遍歷所有的文件。

listdir

可以使用os模塊下的幾個(gè)方法組合起來進(jìn)行遍歷。請(qǐng)看示例:

復(fù)制代碼 代碼如下:

import os
s = os.sep
root = "d:" + s + "ll" + s

for i in os.listdir(root):
    if os.path.isfile(os.path.join(root,i)):
        print i

這里需要注意的是,其中的i是目錄或文件名,不是完整的路徑,在使用時(shí)要結(jié)合os.path.join()方法還原完整路徑。

遍歷搞定之后,文件名的修改可以使用正則表達(dá)式做一些高級(jí)的處理。

另外,還可以使用os.system(cmd)來調(diào)用shell里面的相關(guān)命令對(duì)文件進(jìn)行處理,很好很強(qiáng)大。

相關(guān)文章

  • openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    pencv是用于快速處理圖像處理、計(jì)算機(jī)視覺問題的工具,支持多種語言進(jìn)行開發(fā)如c++、python、java等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • python實(shí)現(xiàn)dbscan算法

    python實(shí)現(xiàn)dbscan算法

    DBSCAN 算法是一種基于密度的空間聚類算法,本文主要介紹了python實(shí)現(xiàn)dbscan算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Python實(shí)現(xiàn)簡(jiǎn)單的文本相似度分析操作詳解

    Python實(shí)現(xiàn)簡(jiǎn)單的文本相似度分析操作詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的文本相似度分析操作,結(jié)合實(shí)例形式分析了Python基于分詞API庫(kù)jieba及文本相似度庫(kù)gensim針對(duì)文本進(jìn)行相似度分析操作的實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • Python?基于Selenium實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁信息的爬取

    Python?基于Selenium實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁信息的爬取

    本文主要介紹了通過Selenium和webdrive等庫(kù),對(duì)動(dòng)態(tài)網(wǎng)頁的信息進(jìn)行爬取。文中的示例代碼非常詳細(xì),感興趣的同學(xué)快來跟隨小編一起學(xué)習(xí)吧
    2021-12-12
  • 詳解Python的條件語句

    詳解Python的條件語句

    這篇文章主要為大家介紹了Python的條件語句,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python skimage 連通性區(qū)域檢測(cè)方法

    python skimage 連通性區(qū)域檢測(cè)方法

    今天小編就為大家分享一篇python skimage 連通性區(qū)域檢測(cè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python3實(shí)現(xiàn)微型的web服務(wù)器

    python3實(shí)現(xiàn)微型的web服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)一個(gè)微型的web服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • python和go語言的區(qū)別是什么

    python和go語言的區(qū)別是什么

    在本篇文章中小編給大家整理的是一篇關(guān)于go語言和python的區(qū)別點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • python http接口自動(dòng)化腳本詳解

    python http接口自動(dòng)化腳本詳解

    這篇文章主要為大家詳細(xì)介紹了python http接口自動(dòng)化腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python zip()函數(shù)的使用示例

    python zip()函數(shù)的使用示例

    這篇文章主要介紹了python zip()的使用示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論