摘要:可以用來設(shè)置當(dāng)便利出現(xiàn)錯(cuò)誤的處理函數(shù)該函數(shù)接受一個(gè)的實(shí)例作為參數(shù),設(shè)置為空則不作處理。返回的是一個(gè)個(gè)元素的元組,分別表示遍歷的路徑名,該路徑下的目錄列表和該路徑下文件列表。
os.walk目錄遍歷
每個(gè)月都有那么幾天想劃水,又到劃水的日子了,今天分享的是剛在處理遍歷目錄相關(guān)用到的相關(guān)方法。
os.walkos.walk的參數(shù)如下:
os.walk(top, topdown=True, onerror=None, followlinks=False)
其中:
top是要遍歷的目錄。
topdown是代表要從上而下遍歷還是從下往上遍歷。
onerror可以用來設(shè)置當(dāng)便利出現(xiàn)錯(cuò)誤的處理函數(shù)(該函數(shù)接受一個(gè)OSError的實(shí)例作為參數(shù)),設(shè)置為空則不作處理。
followlinks表示是否要跟隨目錄下的鏈接去繼續(xù)遍歷,要注意的是,os.walk不會(huì)記錄已經(jīng)遍歷的目錄,所以跟隨鏈接遍歷的話有可能一直循環(huán)調(diào)用下去。
os.walk返回的是一個(gè)3個(gè)元素的元組 (root, dirs, files) ,分別表示遍歷的路徑名,該路徑下的目錄列表和該路徑下文件列表。注意目錄列表和文件列表不是具體路徑,需要具體路徑(從root開始的路徑)的話可以用 os.path.join(root,dir) 和 os.path.join(root,dir) 。
例子假設(shè)現(xiàn)在存在如下的文件和目錄結(jié)構(gòu):
? test_os_walk git:(master) ? tree . ├── a.py ├── b.py ├── c.py ├── dir1 │?? ├── dir4 │?? │?? ├── g.py │?? │?? └── h.py │?? ├── dirx │?? │?? ├── diry │?? │?? │?? └── k.py │?? │?? └── z.py │?? ├── e.py │?? ├── f.py │?? └── g.py ├── dir2 │?? ├── dira │?? │?? └── dirb │?? │?? └── dirc │?? │?? └── aha.py │?? ├── k.py │?? ├── l.py │?? └── m.py └── dir3 ├── dir5 │?? └── z.py ├── x.py └── y.py 10 directories, 17 files測(cè)試topdown
當(dāng)我用 os.walk 遍歷這個(gè)目錄時(shí),程序和輸出如下:
import os path = "/Users/nisen/Projects/python_advanced_class/test/test_os_walk" for root, dirs, files in os.walk(path, True): print "root: %s" % root print "dirs: %s" % dirs print "files: %s" % files print ""
結(jié)果如下,從root的路徑可以看出遍歷是自上而下的:
? test git:(master) ? python test11.py root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk dirs: ["dir1", "dir2", "dir3"] files: ["a.py", "b.py", "c.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1 dirs: ["dir4", "dirx"] files: ["e.py", "f.py", "g.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dir4 dirs: [] files: ["g.py", "h.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dirx dirs: ["diry"] files: ["z.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dirx/diry dirs: [] files: ["k.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2 dirs: ["dira"] files: ["k.py", "l.py", "m.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira dirs: ["dirb"] files: [] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira/dirb dirs: ["dirc"] files: [] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira/dirb/dirc dirs: [] files: ["aha.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir3 dirs: ["dir5"] files: ["x.py", "y.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir3/dir5 dirs: [] files: ["z.py"]
而當(dāng)設(shè)置os.walk的topdown為False時(shí),結(jié)果如下, 可以看出他是自上而下遍歷的:
? test git:(master) ? python test11.py root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dir4 dirs: [] files: ["g.py", "h.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dirx/diry dirs: [] files: ["k.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1/dirx dirs: ["diry"] files: ["z.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir1 dirs: ["dir4", "dirx"] files: ["e.py", "f.py", "g.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira/dirb/dirc dirs: [] files: ["aha.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira/dirb dirs: ["dirc"] files: [] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2/dira dirs: ["dirb"] files: [] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir2 dirs: ["dira"] files: ["k.py", "l.py", "m.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir3/dir5 dirs: [] files: ["z.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk/dir3 dirs: ["dir5"] files: ["x.py", "y.py"] root: /Users/nisen/Projects/python_advanced_class/test/test_os_walk dirs: ["dir1", "dir2", "dir3"] files: ["a.py", "b.py", "c.py"]運(yùn)行時(shí)修改遍歷目錄
當(dāng)topdown設(shè)置為True時(shí),可以在處理時(shí)修改返回的 dirs 列表,這樣可以遍歷下面的目錄時(shí)會(huì)根據(jù)修改后的 dirs 來遍歷。比如下面的例子,在遍歷的時(shí)候不把"CSV"目錄包括在內(nèi):
import os from os.path import join, getsize for root, dirs, files in os.walk("python/Lib/email"): print root, "consumes", print sum(getsize(join(root, name)) for name in files), print "bytes in", len(files), "non-directory files" if "CVS" in dirs: dirs.remove("CVS") # don"t visit CVS directories參考資料
https://docs.python.org/2/lib...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44309.html
摘要:報(bào)告這錯(cuò)誤后,繼續(xù)或者拋出終止。調(diào)用方式當(dāng)前遍歷的目錄目錄下的目錄列表目錄下的文件列表在進(jìn)行文件內(nèi)指針重置的時(shí)候,除了基礎(chǔ)篇文件部分介紹的絕對(duì)定位外,通過模塊還可以實(shí)現(xiàn)相對(duì)定位。 Python的目錄操作主要依賴于os和 shutil 模塊. Python目錄操作 新建目錄 os.mkdir(./test/) #在當(dāng)前目錄下新建名為test的目錄,存在則報(bào)錯(cuò) 新建多級(jí)目錄 os.make...
摘要:刪除刪除只能刪除文件,若為目錄則報(bào)錯(cuò)若文件正在使用,下會(huì)直接報(bào)錯(cuò),下會(huì)在目錄表中刪除記錄,但文件還在與一樣的作用刪除目錄,目錄必須為空,否則報(bào)錯(cuò)遞歸刪除空目錄刪除整個(gè)目錄不管此目錄下有多少目錄和文件新建新建新建文件夾,若倒數(shù)第二層文件夾不存 刪除 # ==================刪除================== # 只能刪除文件,若為目錄則報(bào)錯(cuò) # 若文件正在使用,Wi...
摘要:?jiǎn)卧卦孢@是整數(shù)這才是元祖也許這兩行,你們當(dāng)時(shí)疑惑過,并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。雖然我水平很垃圾,但是我知道匿名函數(shù)有一種執(zhí)行方式叫做自執(zhí)行。看吧,這就是版的匿名函數(shù)自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數(shù)1 a = (1,) # 這才是元祖 也許這兩行,你們當(dāng)時(shí)疑惑過,并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。 我無聊的時(shí)候想過,為什么單...
摘要:像但創(chuàng)建的所有文件夾需要包含子文件夾。如果子文件夾不能被成功刪除,將拋出。是一個(gè)字符串的路徑在中子文件夾的列表不包括。如果參數(shù)為或者指定一個(gè)的將比它的任何子文件夾的先產(chǎn)生自上而下。 Python的標(biāo)準(zhǔn)庫中的os模塊包含普遍的操作系統(tǒng)功能。這個(gè)模塊的作用主要是提供與平臺(tái)無關(guān)的功能。也就是說os模塊能夠處理平臺(tái)間的差異問題,使得編寫好的程序無需做任何改動(dòng)就能在另外的平臺(tái)上運(yùn)行。當(dāng)然,這個(gè)模...
摘要:在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并文件的需求。模塊的相關(guān)參考文檔網(wǎng)址為本文將介紹如何利用來完成文件的合并。 ??在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并PDF文件的需求。這時(shí),我們可以利用相關(guān)的PDF軟件(如Adobe Acrobat Reader DC)來完成這個(gè)任務(wù),幸運(yùn)的是,Python也為我們提供了這方面的處理模塊PyPDF2, 借用它,我們可以利用Pytho...
閱讀 2664·2021-11-18 10:02
閱讀 3426·2021-09-22 15:50
閱讀 2357·2021-09-06 15:02
閱讀 3576·2019-08-29 16:34
閱讀 1744·2019-08-29 13:49
閱讀 1274·2019-08-29 13:29
閱讀 3629·2019-08-28 18:08
閱讀 2937·2019-08-26 11:52