python中遍歷文件的3個方法
今天寫一個在windows下批量修改文件名的python腳本,用到文件的遍歷。用python進行文件遍歷有多種方法,這里列舉并說明一下。
os.path.walk()
這是一個傳統(tǒng)的用法。
walk(root,callable,args)方法有三個參數(shù):要遍歷的目錄,回調(diào)函數(shù),回調(diào)函數(shù)的參數(shù)(元組形式)。
調(diào)用的過程是遍歷目錄下的文件或目錄,每遍歷一個目錄,調(diào)用回調(diào)函數(shù),并把args作為參數(shù)傳遞給回調(diào)函數(shù)。
回調(diào)函數(shù)定義時也有三個參數(shù),比如示例中的func中的三個參數(shù),分別為walk傳來的參數(shù)、目錄的路徑、目錄下的文件列表(只有文件名,不是完整路徑)。請看示例:
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) #分割文件名為名字和擴展名的二元組
new = fname[0] + 'b' + fname[1] #改名字
os.rename(os.path.join(dire,f),os.path.join(dire,new)) #重命名
os.path.walk(root,func,()) #遍歷
這種方法在使用時有個問題,不能遞歸遍歷下一層(這點我還不確定,歡迎指正)。
python的高級版本中加入了os.walk(),比這個好用。
os.walk()
原型為:os.walk(top, topdown=True, onerror=None, followlinks=False)
我們一般只使用第一個參數(shù)。(topdown指明遍歷的順序)
該方法對于每個目錄返回一個三元組,(dirpath, dirnames, filenames)。第一個是路徑,第二個是路徑下面的目錄,第三個是路徑下面的非目錄(對于windows來說也就是文件)。請看示例:
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模塊下的幾個方法組合起來進行遍歷。請看示例:
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是目錄或文件名,不是完整的路徑,在使用時要結(jié)合os.path.join()方法還原完整路徑。
遍歷搞定之后,文件名的修改可以使用正則表達式做一些高級的處理。
另外,還可以使用os.system(cmd)來調(diào)用shell里面的相關(guān)命令對文件進行處理,很好很強大。
相關(guān)文章
python csv實時一條一條插入且表頭不重復(fù)問題
這篇文章主要介紹了python csv實時一條一條插入且表頭不重復(fù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
pycharm 無法加載文件activate.ps1的原因分析及解決方法
這篇文章主要介紹了pycharm報錯提示:無法加載文件\venv\Scripts\activate.ps1,因為在此系統(tǒng)上禁止運行腳本,解決方法終端輸入get-executionpolicy,回車返回Restricted即可,需要的朋友可以參考下2022-11-11
使用Python將EPUB電子書網(wǎng)文主角換成自己
通過Python對EPUB電子書格式進行解壓、修改和重新打包,實現(xiàn)將網(wǎng)文主角名字替換成自己或其他指定名字的有趣嘗試,這一過程主要涉及zipfile和os庫的使用,以及對HTML或XHTML文件中字符串的查找與替換,感興趣的朋友一起看看吧2024-11-11
Python字典刪除鍵值對和元素的四種方法(小結(jié))
刪除列表或者字符串元素的方法不止一種,同樣,刪除字典元素的方法也不止一種,本文主要介紹python中刪除字典元素的四種方法:1、使用del語句;2、使用clear();3、使用pop();4、使用popitem()。感興趣的可以了解一下2021-12-12
Python趣味挑戰(zhàn)之用pygame實現(xiàn)飛機塔防游戲
一步步實現(xiàn)有趣的飛機塔防游戲,有興趣了解一下嗎?文中有非常詳細的代碼示例,對喜歡玩游戲的小伙伴們很有幫助哦,需要的朋友可以參考下2021-05-05

