模組os中的walk()函式可以遍歷資料夾下所有的檔案。
[python]
view plain
copy
os.walk(top, topdown=ture, οnerrοr=
none
, followlinks=
false
)
該函式可以得到乙個三元tupple(dirpath, dirnames, filenames).
引數含義:
注意,dirnames和filenames均不包含路徑資訊,如需完整路徑,可使用os.path.join(dirpath, dirnames)
下面給出**;
[python]
view plain
copy
# -*- coding: utf-8 -*-
import
os
deffile_name(file_dir):
forroot, dirs, files
inos.walk(file_dir):
(root)
#當前目錄路徑
(dirs)
#當前路徑下所有子目錄
(files)
#當前路徑下所有非目錄子檔案
當需要特定型別的檔案時,**如下:
[python]
view plain
copy
# -*- coding: utf-8 -*-
import
os
deffile_name(file_dir):
l=
forroot, dirs, files
inos.walk(file_dir):
forfile
infiles:
ifos.path.splitext(file)[
1] ==
'.jpeg'
: return
l
os.listdir()函式得到的是僅當前路徑下的檔名,不包括子目錄中的檔案,所有需要使用遞迴的方法得到全部檔名。
直接給出**,函式將返回型別為『.jpeg』個檔名:
[python]
view plain
copy
# -*- coding: utf-8 -*-
import
os
deflistdir(path, list_name):
forfile
inos.listdir(path):
file_path = os.path.join(path, file)
ifos.path.isdir(file_path):
listdir(file_path, list_name)
elif
os.path.splitext(file_path)[
1]==
'.jpeg'
:
遍歷資料夾是乙個很常用的功能吧。這裡分別用兩種方法實現:
第一種:使用os.walk:
# -*- coding: utf-8 -*-第二種:使用os.listdir:import
os def
test1(rootdir):
list_dirs = os.walk(rootdir)
forroot, dirs, files
inlist_dirs:
ford
indirs:
os.path.join(root, d)
forf
infiles:
os.path.join(root, f)
# -*- 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
>>>
另外之前列印出的目錄樹其實就是通過對第二種方法進行稍微修改實現的,如下:
deftest3(rootdir, level=
1):
iflevel==1:
rootdir
forlists
inos.listdir(rootdir):
path = os.path.join(rootdir, lists)
'│ '
*(level-1)+
'│--'
+lists
ifos.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遍歷資料夾的兩種方法比較
遍歷資料夾是乙個很常用的功能吧。這裡分別用兩種方法實現 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...
python 遍歷資料夾
在python中,檔案操作主要來自os模組,主要方法如下 os.listdir dirname 列出dirname下的目錄和檔案 os.getcwd 獲得當前工作目錄 os.curdir 返回當前目錄 os.chdir dirname 改變工作目錄到dirname os.path.isdir nam...