遍歷資料夾是乙個很常用的功能吧。這裡分別用兩種方法實現:
# -*- coding: utf-8 -*-
import os
def test1(rootdir):
list_dirs = os.walk(rootdir)
for root, dirs, files in list_dirs:
for d in dirs:
print os.path.join(root, d)
for f in files:
print os.path.join(root, f)
第二種:使用os.listdir:
# -*- coding: utf-8 -*-
import os
def test2(rootdir):
for lists in os.listdir(rootdir):
path = os.path.join(rootdir, lists)
print path
if os.path.isdir(path):
test2(path)
這兩種到底有什麼區別呢?
這裡先建立乙個測試目錄e:\test,目錄結構如下:
e:\test
│--a
│ │--a-a
│ │ │--a-a-a.txt
│ │--a-b.txt
│ │--a-c
│ │ │--a-b-a.txt
│ │--a-d.txt
│--b.txt
│--c
│ │--c-a.txt
│ │--c-b.txt
│--d.txt
│--e
下面通過執行如下**:
test1('e:\test')
'***********************************===='
test2('e:\test')
輸出結果為:
>>>
e:\test\a
e:\test\c
e:\test\e
e:\test\b.txt
e:\test\d.txt
e:\test\a\a-a
e:\test\a\a-c
e:\test\a\a-b.txt
e:\test\a\a-d.txt
e:\test\a\a-a\a-a-a.txt
e:\test\a\a-c\a-b-a.txt
e:\test\c\c-a.txt
e:\test\c\c-b.txt
***********************************====
e:\test\a
e:\test\a\a-a
e:\test\a\a-a\a-a-a.txt
e:\test\a\a-b.txt
e:\test\a\a-c
e:\test\a\a-c\a-b-a.txt
e:\test\a\a-d.txt
e:\test\b.txt
e:\test\c
e:\test\c\c-a.txt
e:\test\c\c-b.txt
e:\test\d.txt
e:\test\e
>>>
可以看出,對於第一種方法,輸出總是先資料夾後檔名的,對於第二種,則是按照目錄樹結構以及按照首字母排序進行輸出的。
另外之前列印出的目錄樹其實就是通過對第二種方法進行稍微修改實現的,如下:
def test3(rootdir, level=1):
if level==1: print rootdir
for lists in os.listdir(rootdir):
path = os.path.join(rootdir, lists)
'│ '*(level-1)+'│--'+lists
if os.path.isdir(path):
test3(path, level+1)
python刪除資料夾的兩種方式
os提供的rmdir 函式和removedirs 函式只能刪除空資料夾,這裡提供兩種方法,能夠刪除整個資料夾 import os defdelete dir root dirlist os.listdir root 返回dir資料夾裡的所有檔案列表 for f in dirlist filepath...
Python遍歷資料夾的兩種方法比較
模組os中的walk 函式可以遍歷資料夾下所有的檔案。python view plain copy os.walk top,topdown ture,nerr r none followlinks false 該函式可以得到乙個三元tupple dirpath,dirnames,filenames ...
python 遍歷資料夾
在python中,檔案操作主要來自os模組,主要方法如下 os.listdir dirname 列出dirname下的目錄和檔案 os.getcwd 獲得當前工作目錄 os.curdir 返回當前目錄 os.chdir dirname 改變工作目錄到dirname os.path.isdir nam...