成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python os.walk() 簡(jiǎn)介

fanux / 2452人閱讀

摘要:可以用來(lái)設(shè)置當(dāng)便利出現(xiàn)錯(cuò)誤的處理函數(shù)該函數(shù)接受一個(gè)的實(shí)例作為參數(shù),設(shè)置為空則不作處理。返回的是一個(gè)個(gè)元素的元組,分別表示遍歷的路徑名,該路徑下的目錄列表和該路徑下文件列表。

os.walk目錄遍歷

每個(gè)月都有那么幾天想劃水,又到劃水的日子了,今天分享的是剛在處理遍歷目錄相關(guān)用到的相關(guān)方法。

os.walk

os.walk的參數(shù)如下:

os.walk(top, topdown=True, onerror=None, followlinks=False)

其中:

top是要遍歷的目錄。

topdown是代表要從上而下遍歷還是從下往上遍歷。

onerror可以用來(lái)設(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開(kāi)始的路徑)的話可以用 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 來(lái)遍歷。比如下面的例子,在遍歷的時(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://systransis.cn/yun/44309.html

相關(guān)文章

  • Python文件及目錄操作

    摘要:報(bào)告這錯(cuò)誤后,繼續(xù)或者拋出終止。調(diào)用方式當(dāng)前遍歷的目錄目錄下的目錄列表目錄下的文件列表在進(jìn)行文件內(nèi)指針重置的時(shí)候,除了基礎(chǔ)篇文件部分介紹的絕對(duì)定位外,通過(guò)模塊還可以實(shí)現(xiàn)相對(duì)定位。 Python的目錄操作主要依賴于os和 shutil 模塊. Python目錄操作 新建目錄 os.mkdir(./test/) #在當(dāng)前目錄下新建名為test的目錄,存在則報(bào)錯(cuò) 新建多級(jí)目錄 os.make...

    dkzwm 評(píng)論0 收藏0
  • 這可能是最詳細(xì)的Python文件操作

    摘要:刪除刪除只能刪除文件,若為目錄則報(bào)錯(cuò)若文件正在使用,下會(huì)直接報(bào)錯(cuò),下會(huì)在目錄表中刪除記錄,但文件還在與一樣的作用刪除目錄,目錄必須為空,否則報(bào)錯(cuò)遞歸刪除空目錄刪除整個(gè)目錄不管此目錄下有多少目錄和文件新建新建新建文件夾,若倒數(shù)第二層文件夾不存 刪除 # ==================刪除================== # 只能刪除文件,若為目錄則報(bào)錯(cuò) # 若文件正在使用,Wi...

    阿羅 評(píng)論0 收藏0
  • 經(jīng)驗(yàn)拾憶(純手工)=> Python好用深度技能工具介紹

    摘要:?jiǎn)卧卦孢@是整數(shù)這才是元祖也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。雖然我水平很垃圾,但是我知道匿名函數(shù)有一種執(zhí)行方式叫做自執(zhí)行??窗桑@就是版的匿名函數(shù)自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數(shù)1 a = (1,) # 這才是元祖 也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。 我無(wú)聊的時(shí)候想過(guò),為什么單...

    UnixAgain 評(píng)論0 收藏0
  • Python os模塊參考手冊(cè)

    摘要:像但創(chuàng)建的所有文件夾需要包含子文件夾。如果子文件夾不能被成功刪除,將拋出。是一個(gè)字符串的路徑在中子文件夾的列表不包括。如果參數(shù)為或者指定一個(gè)的將比它的任何子文件夾的先產(chǎn)生自上而下。 Python的標(biāo)準(zhǔn)庫(kù)中的os模塊包含普遍的操作系統(tǒng)功能。這個(gè)模塊的作用主要是提供與平臺(tái)無(wú)關(guān)的功能。也就是說(shuō)os模塊能夠處理平臺(tái)間的差異問(wèn)題,使得編寫(xiě)好的程序無(wú)需做任何改動(dòng)就能在另外的平臺(tái)上運(yùn)行。當(dāng)然,這個(gè)模...

    sherlock221 評(píng)論0 收藏0
  • Python之合并PDF文件

    摘要:在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并文件的需求。模塊的相關(guān)參考文檔網(wǎng)址為本文將介紹如何利用來(lái)完成文件的合并。 ??在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并PDF文件的需求。這時(shí),我們可以利用相關(guān)的PDF軟件(如Adobe Acrobat Reader DC)來(lái)完成這個(gè)任務(wù),幸運(yùn)的是,Python也為我們提供了這方面的處理模塊PyPDF2, 借用它,我們可以利用Pytho...

    maxmin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<