最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)、目錄的路徑、目錄下的文件列表(只有文件名,不是完整路徑)。請看示例:

復(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的高級版本中加入了os.walk(),比這個(gè)好用。

os.walk()

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

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

復(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)行遍歷。請看示例:

復(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á)式做一些高級的處理。

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

相關(guān)文章

  • python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題

    python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題

    這篇文章主要介紹了python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python中文字符如何轉(zhuǎn)url編碼

    python中文字符如何轉(zhuǎn)url編碼

    這篇文章主要介紹了python中文字符如何轉(zhuǎn)url編碼問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • pycharm 無法加載文件activate.ps1的原因分析及解決方法

    pycharm 無法加載文件activate.ps1的原因分析及解決方法

    這篇文章主要介紹了pycharm報(bào)錯提示:無法加載文件\venv\Scripts\activate.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本,解決方法終端輸入get-executionpolicy,回車返回Restricted即可,需要的朋友可以參考下
    2022-11-11
  • 使用Python將EPUB電子書網(wǎng)文主角換成自己

    使用Python將EPUB電子書網(wǎng)文主角換成自己

    通過Python對EPUB電子書格式進(jìn)行解壓、修改和重新打包,實(shí)現(xiàn)將網(wǎng)文主角名字替換成自己或其他指定名字的有趣嘗試,這一過程主要涉及zipfile和os庫的使用,以及對HTML或XHTML文件中字符串的查找與替換,感興趣的朋友一起看看吧
    2024-11-11
  • Python排序算法快速排序VS歸并排序深入對比分析

    Python排序算法快速排序VS歸并排序深入對比分析

    快速排序和歸并排序是兩種常見的排序算法,在Python中有著重要的應(yīng)用,本文將深入探討這兩種算法的原理和實(shí)現(xiàn),并提供豐富的示例代碼來說明它們的工作方式
    2024-01-01
  • Python字典刪除鍵值對和元素的四種方法(小結(jié))

    Python字典刪除鍵值對和元素的四種方法(小結(jié))

    刪除列表或者字符串元素的方法不止一種,同樣,刪除字典元素的方法也不止一種,本文主要介紹python中刪除字典元素的四種方法:1、使用del語句;2、使用clear();3、使用pop();4、使用popitem()。感興趣的可以了解一下
    2021-12-12
  • Python趣味挑戰(zhàn)之用pygame實(shí)現(xiàn)飛機(jī)塔防游戲

    Python趣味挑戰(zhàn)之用pygame實(shí)現(xiàn)飛機(jī)塔防游戲

    一步步實(shí)現(xiàn)有趣的飛機(jī)塔防游戲,有興趣了解一下嗎?文中有非常詳細(xì)的代碼示例,對喜歡玩游戲的小伙伴們很有幫助哦,需要的朋友可以參考下
    2021-05-05
  • 深入理解python虛擬機(jī)如何實(shí)現(xiàn)閉包

    深入理解python虛擬機(jī)如何實(shí)現(xiàn)閉包

    當(dāng)能夠從設(shè)計(jì)者的層面去理解閉包就再也不用死記硬背一些閉包的概念了,所以本文就來從虛擬機(jī)層面和大家一起討論函數(shù)閉包是如何實(shí)現(xiàn)的
    2023-10-10
  • Python中with及contextlib的用法詳解

    Python中with及contextlib的用法詳解

    這篇文章主要介紹了Python中with及contextlib的用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了with及contextlib的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • Python面向?qū)ο缶幊蘲epr方法示例詳解

    Python面向?qū)ο缶幊蘲epr方法示例詳解

    這篇文章主要介紹了Python面向?qū)ο缶幊蘲epr方法的示例詳解,文中附含詳細(xì)的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論

龙陵县| 出国| 化州市| 惠州市| 洪江市| 始兴县| 图木舒克市| 竹北市| 安陆市| 汶川县| 深圳市| 湖州市| 渑池县| 聂荣县| 灵山县| 托克逊县| 苏尼特右旗| 龙岩市| 宿迁市| 商洛市| 石门县| 平舆县| 景德镇市| SHOW| 永顺县| 高平市| 德庆县| 藁城市| 怀安县| 容城县| 淅川县| 黔南| 黄龙县| 郧西县| 宜君县| 江山市| 南涧| 平度市| 博白县| 锦屏县| 临西县|