目錄生成器 Directory tree generator.!
walk() 是 generator,直接print() 為 <generator object walk at 0x000001EB1C519888> ,一般常用 for 循環周遊其傳回值。
os.walk(top [,topdown=True [,οnerrοr=None [,followlinks=False]]])
函數會周遊 top 目錄(包含其本身)下的所有檔案夾。
參數:
top - 要周遊的目錄位址(字元串形式),分隔符為 /,而不能是 \
topdown - 可選參數,預設True,從 top 向子目錄方向生成 tuple 結果;若為 False,則從子目錄向 top 根目錄方向生成 tuple 結果
onerror - 可選,預設None,需要一個 callable 對象,當 walk 需要異常時,才會被調用。
followlinks -- 可選,預設False,如果為 True,則會周遊目錄下的快捷方式(linux 下是軟連接配接 symbolic link )實際所指的目錄(預設關閉),如果為 False,則優先周遊 top 的子目錄。
傳回值:
對于以 top 為根的目錄樹中的每個目錄(包括 top 本身,同時每一層周遊僅為目前檔案夾内容,每一層周遊均不包括 ’ . ‘ 和 ’ .. ',),産生一個含有 3 元素的元組(yields a 3-tuple):
dirpath, dirnames, filenames
- dirpath - 字元串str,目前正在周遊的檔案夾本身的位址
- dirnames - 清單list,dirpath 中所有目錄的名稱(不包括子目錄,不包括 ’ . ‘ 和 ’ .. ')
- filenames - 清單list,dirpath 中所有非目錄檔案的名稱(不包括子目錄)。
注意,tuple中的名稱僅僅是名稱,不是完整的路徑。要想擷取 filenames 的完整路徑(以 top開頭),請執行
import os
for dirpath, dirnames, filesnames in os.walk("D:/project/opencv3", topdown=False):
for name in files:
print(os.path.join(root, name))
常用示例:
import os
# walk 生成器
# print(os.walk("D:/project/opencv3/c6"))
# <generator object walk at 0x000001EB1C519888>
# "." 目前檔案的根目錄
# for root, dirs, files in os.walk("."):
for root, dirs, files in os.walk("D:/project/opencv3/c6"):
# 檔案路徑
for name in files:
print(os.path.join(root, name))
# D:/project/opencv3/c6\test.py
# 子檔案夾的路徑
for name in dirs:
print(os.path.join(root, name))
# D:/project/opencv3/c6\python_c6
轉載于:https://www.cnblogs.com/gengyi/p/10546102.html