#!/usr/bin/python #coding=utf-8 import os def dirlist(path): for root,dirs,files in os.walk(path): #將os.walk在元素中提取的值,分別放到root(根目錄),dirs(目錄名),files(文件名)中。 for file in files: print os.path.join(root,file) #根目錄與文件名組合,形成絕對路徑。 if __name__=='__main__': path = '/test' dirlist(path)
執行結果:

知識點:
代碼中的root為str類型,dirs為list類型,files為list類型
當root為/test時,dirs列表中是/test下的目錄,files列表是/test下的文件
當root為/test/aa時,dirs列表則為/test/aa下的目錄,fiels列表是/test/aa下的文件
心得:
#!/usr/bin/python import os,os.path def visit(arg,dirname,names): for filespath in names: print os.path.join(dirname,filespath) if __name__=='__main__': path = '/test' os.path.walk(path,visit,())
關於os.path.walk不清楚,暫且標記。
轉自
自學python之——os.walk 查找目錄下的文件 - CSDN博客 https://blog.csdn.net/happylife_haha/article/details/44566975
#!/usr/bin/python # -*- coding: gbk -*- # os.walk()的使用 import os # 枚舉dirPath目錄下的所有文件 def main(): #begin fileDir = "F:" + os.sep + "kams" # 查找F:\aaa 目錄下 for root, dirs, files in os.walk(fileDir): #begin for dir in dirs: #begin print(os.path.join(root, dir)) #end for file in files: #begin print(os.path.join(root, file)) #end #end os.system("pause") #end if __name__ == '__main__': #begin main() #end
執行結果
目錄:
F:\kams\.svn F:\kams\war119 F:\kams\war120
文件: F:\kams\.svn\pristine F:\kams\.svn\tmp F:\kams\.svn\entries F:\kams\.svn\format F:\kams\.svn\wc.db F:\kams\.svn\wc.db-journal F:\kams\.svn\pristine\12 F:\kams\.svn\pristine\96 F:\kams\.svn\pristine\9a F:\kams\.svn\pristine\12\12b99bf8ef5342805dab3cb5da02650ea50d7994.svn-base F:\kams\.svn\pristine\96\96c5938bf3f1c89e3da195fc7839744a8b01822a.svn-base F:\kams\.svn\pristine\9a\9a71415db2b420aa1d6eae9166b5128aaab4c402.svn-base F:\kams\war119\czx.py F:\kams\war119\zabbix_server_modify.sh F:\kams\war120\czx.py F:\kams\war120\test.py F:\kams\war120\zabbix_server_modify.sh
轉自
Python os.walk文件遍歷 - 星星故鄉 - 博客園 https://www.cnblogs.com/lincj/p/5617605.html
python 簡單示例說明os.walk和os.path.walk的不同
import os,os.path def func(arg,dirname,names): for filespath in names: print os.path.join(dirname,filespath) if __name__=="__main__": print "==========os.walk================" index = 1 for root,subdirs,files in os.walk("c:\\test"): print "第",index,"層" index += 1 for filepath in files: print os.path.join(root,filepath) for sub in subdirs: print os.path.join(root,sub) print "==========os.path.walk================" os.path.walk("c:\\test",func,())
結果如下:

總結:
(1)兩者都能實現達到同一個效果
(2)在python3中,os.path.walk要被os.walk取代了,大家盡量用os.walk
(3)os.walk明顯比os.path.walk要簡潔一些,起碼它不需要回調函數,遍歷的時候一目了然:root,subdirs,files
(4)可能你在煩惱,os.path.walk的第三個參數arg有什么用,好吧,當你os.path.walk()賦值給arg的時候,你就可以在第二個參數對應的func中用arg了
轉自
python 簡單示例說明os.walk和os.path.walk的不同 - CSDN博客 https://blog.csdn.net/emaste_r/article/details/12442675

python中os.walk是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。
1.載入
要使用os.walk,首先要載入該函數
可以使用以下兩種方法
2.使用
os.walk的函數聲明為:
walk(top, topdown=True, onerror=None, followlinks=False)
參數
os.walk 的返回值是一個生成器(generator),也就是說我們需要不斷的遍歷它,來獲得所有的內容。
每次遍歷的對象都是返回的是一個三元組(root,dirs,files)
如果topdown 參數為真,walk 會遍歷top文件夾,與top文件夾中每一個子目錄。
舉個例子
如果我們有如下的文件結構:
3.簡單的例子
保持目錄 a 的目錄結構,在 b 中創建對應的文件夾,並把a中所有的文件加上后綴 _bak
作者:MikuLovely
鏈接:https://www.jianshu.com/p/bbad16822eab
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。