關于Python的文件遍歷,大概有兩種方法,一種是較為便利的os.walk(),還有一種是利用os.listdir()遞歸遍歷。
方法一:利用os.walk
os.walk可以自頂向下或者自底向上遍歷整個文件樹,然后返回一個含有3個元素的tuple,(dirpath, dirnames, filenames),要注意的是,os.walk()會返回一個generater,所以調用的時候一定要放到for循環中。
import os
def walk_dir(dirname):
?for root,dirs,files in os.walk(dirname):
??for f in files:
???yield os.path.join(root, f)
方法二:利用os.listdir()
這個方法也比較簡單,列出目錄然后判斷是不是文件夾,不是的話直接返回文件路徑,是的話遞歸調用。
import os
def walk_dir2(dirname):
?for d in os.listdir(dirname):
??path = os.path.join(dirname, d)
??if os.path.isdir(path):
???#note recursive in for...in...
???for f in walk_dir2(path):
????yield f
??else:
???yield path
這里值得一提的是,由于函數中使用了yield,所以會被認為是一個generater,遞歸調用的時候也需要放到for循環中,否則函數并不會被真正執行。最新的Python 3.3中引入了yield from語法,可以解決上面的問題。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
