1. 程式人生 > >python os.walk的用法與舉例

python os.walk的用法與舉例

python os.walk的用法與舉例

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


可以得到一個三元tupple(dirpath, dirnames, filenames),

第一個為文件路徑,第二個為所有文件夾名,第三個是所有文件夾下的文件,它會輸出所有的文件和路徑

dirpath 是一個string,代表目錄的路徑,

dirnames 是一個list,包含了dirpath下所有子目錄的名字。

filenames 是一個list,包含了非目錄文件的名字。

這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name).


通過for

循環自動完成遞歸枚舉

[root:/opt]>$ tree /opt/
/opt/
├── aa
└── test
├── aa
└── file

2 directories, 2 files

#!/usr/bin/python
# -*- coding: utf8 -*-
#*************************************************************************
# File Name: os.walk.py
# Author: huxianyong
# Mail: [email protected]
# Created Time: Wed 21 Dec 2016 12:29:55 PM CST


#************************************************************************

import os
def main():
file_dir = "/" + os.sep + "opt"
for i,j,k in os.walk(file_dir):
print "起始路徑為: ",i
print "起始路徑下的文件夾為: ",j
print "起始路徑下的文件為: ",k
print "\n"
if __name__ == '__main__':
main()

[root:/python]>$ python os.walk.py
起始路徑為: //opt
起始路徑下的文件夾為: ['test']
起始路徑下的文件為: ['aa']


起始路徑為: //opt/test
起始路徑下的文件夾為: ['aa']
起始路徑下的文件為: ['file']


起始路徑為: //opt/test/aa
起始路徑下的文件夾為: []
起始路徑下的文件為: []

可以換另一種方法,得到的結果相同

import os
def main():
file_dir = "/" + os.sep + "opt"
for i in os.walk(file_dir):
print "起始路徑為: ",i[0]
print "起始路徑下的文件夾為: ",i[1]
print "起始路徑下的文件為: ",i[2]
print "\n"
if __name__ == '__main__':
main()

也可以以另一種形式展示:

import os
def main():
file_dir = "/" + os.sep + "opt"
for i,j,k in os.walk(file_dir):
for h in j:
print "起始路徑下的文件夾為: "
print(os.path.join(i,h))
for g in k:
print "起始路徑下的文件為: "
print(os.path.join(i,g))
print "\n"
if __name__ == '__main__':
main()

[root:/python]>$ python os.walk3.py
起始路徑下的文件夾為:
//opt/test
起始路徑下的文件為:
//opt/aa


起始路徑下的文件夾為:
//opt/test/aa
起始路徑下的文件為



python os.walk的用法與舉例