python中os.walk的用法

python中os.walk是一個(gè)簡(jiǎn)單易用的文件甚负、目錄遍歷器柬焕,可以幫助我們高效的處理文件、目錄方面的事情梭域。
1.載入
要使用os.walk,首先要載入該函數(shù)
可以使用以下兩種方法

import os
from os import walk

2.使用
os.walk的函數(shù)聲明為:
walk(top, topdown=True, onerror=None, followlinks=False)
參數(shù)

top 是你所要便利的目錄的地址
topdown 為真斑举,則優(yōu)先遍歷top目錄(廣度遍歷),否則優(yōu)先遍歷top的子目錄(深度遍歷病涨,默認(rèn)為開(kāi)啟)
onerror 需要一個(gè) callable 對(duì)象富玷,當(dāng)walk需要異常時(shí),會(huì)調(diào)用
followlinks 如果為真既穆,則會(huì)遍歷目錄下的快捷方式(linux 下是 symbolic link)實(shí)際所指的目錄(默認(rèn)關(guān)閉)

os.walk 的返回值是一個(gè)生成器(generator),也就是說(shuō)我們需要不斷的遍歷它赎懦,來(lái)獲得所有的內(nèi)容。
每次遍歷的對(duì)象都是返回的是一個(gè)三元組(root,dirs,files)

root 所指的是當(dāng)前正在遍歷的這個(gè)文件夾的本身的地址
dirs 是一個(gè) list 幻工,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄)
files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)

如果topdown 參數(shù)為真励两,walk 會(huì)遍歷top文件夾,與top文件夾中每一個(gè)子目錄会钝。
舉個(gè)例子
如果我們有如下的文件結(jié)構(gòu):

      a ->   b   ->   1.txt,  2.txt
             c   ->   3.txt
             d   ->   
           4.txt
           5.txt
for (root, dirs, files) in os.walk('a'):
    #第一次運(yùn)行時(shí)伐蒋,當(dāng)前遍歷目錄為 a
    所以 root == 'a'
         dirs == [ 'b', 'c', 'd']
         files == [ '4.txt', '5.txt']

    # 接著遍歷 dirs 中的每一個(gè)目錄
    b:  root  = 'a\\b'
        dirs  = []
        files = [ '1.txt', '2.txt']
    
    # dirs為空工三,返回
    # 遍歷c
    c:  root  = 'a\\c'
        dirs  = []
        files = [ '3.txt' ]
    
    PS : 如果想獲取文件的全路徑迁酸,只需要 
    for f in files:
        path = os.path.join(root,f)
    
    # 遍歷d
    d:  root  = 'a\\b'
        dirs  = []
        files = []

    遍歷完畢,退出循環(huán)

3.簡(jiǎn)單的例子

保持目錄 a 的目錄結(jié)構(gòu)俭正,在 b 中創(chuàng)建對(duì)應(yīng)的文件夾,并把a(bǔ)中所有的文件加上后綴 _bak

import os

Root = 'a'
Dest = 'b'

for (root, dirs, files) in os.walk(Root):
    new_root = root.replace(Root, Dest, 1)
    if not os.path.exists(new_root):
        os.mkdir(new_root)
    
    for d in dirs:
        d = os.path.join(new_root, d)
        if not os.path.exists(d):
            os.mkdir(d)
    
    for f in files:
        # 把文件名分解為 文件名.擴(kuò)展名
        # 在這里可以添加一個(gè) filter奸鬓,過(guò)濾掉不想復(fù)制的文件類(lèi)型,或者文件名
        (shotname, extension) = os.path.splitext(f)
        # 原文件的路徑
        old_path = os.path.join(root, f)
        new_name = shotname + '_bak' + extension
        # 新文件的路徑
        new_path = os.path.join(new_root, new_name)
        try:
            # 復(fù)制文件
            open(new_path, 'wb').write(open(old_path, 'rb').read())
        except IOError as e:
            print(e)

轉(zhuǎn)載自http://www.reibang.com/p/bbad16822eab

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掸读,一起剝皮案震驚了整個(gè)濱河市串远,隨后出現(xiàn)的幾起案子宏多,更是在濱河造成了極大的恐慌,老刑警劉巖澡罚,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伸但,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡留搔,警方通過(guò)查閱死者的電腦和手機(jī)更胖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隔显,“玉大人却妨,你說(shuō)我怎么就攤上這事±撸” “怎么了彪标?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掷豺。 經(jīng)常有香客問(wèn)我捞烟,道長(zhǎng),這世上最難降的妖魔是什么当船? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任坷襟,我火速辦了婚禮,結(jié)果婚禮上生年,老公的妹妹穿的比我還像新娘婴程。我一直安慰自己,他們只是感情好抱婉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布档叔。 她就那樣靜靜地躺著,像睡著了一般蒸绩。 火紅的嫁衣襯著肌膚如雪衙四。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天患亿,我揣著相機(jī)與錄音传蹈,去河邊找鬼。 笑死步藕,一個(gè)胖子當(dāng)著我的面吹牛惦界,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咙冗,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼沾歪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了雾消?” 一聲冷哼從身側(cè)響起灾搏,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挫望,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后狂窑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體媳板,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年泉哈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拷肌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旨巷,死狀恐怖巨缘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情采呐,我是刑警寧澤若锁,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站斧吐,受9級(jí)特大地震影響又固,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜煤率,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一仰冠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝶糯,春花似錦洋只、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妒茬,卻和暖如春担锤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乍钻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工肛循, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人银择。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓多糠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欢摄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子熬丧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • python中os.walk是一個(gè)簡(jiǎn)單易用的文件笋粟、目錄遍歷器怀挠,可以幫助我們高效的處理文件析蝴、目錄方面的事情。 1.載...
    MikuLovely閱讀 67,310評(píng)論 4 42
  • os.walk() 函數(shù)聲明:walk(top,topdown=True,onerror=None) 1>參數(shù)to...
    mugtmag閱讀 3,975評(píng)論 0 0
  • 一绿淋、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • 前天和媽媽視頻聊天吞滞,突然被媽媽的神情觸動(dòng)了佑菩,有種落寞和無(wú)奈,那種神情關(guān)了視頻也無(wú)法平靜裁赠。晚上關(guān)上燈一個(gè)人殿漠,坐在大廳...
    許振閱讀 126評(píng)論 0 0
  • 肥進(jìn)閱讀 222評(píng)論 0 0