1. 程式人生 > >Python:遍歷輸出某路徑下的所有文件和文件夾

Python:遍歷輸出某路徑下的所有文件和文件夾

pri dir lis 函數 tmp 問題 names pat 名稱

怎麽遍歷輸出某路徑下的所有問價和文件夾?

這個問題和,“指定一個節點,輸出以這個節點作為根節點的這棵樹的所有子節點”一樣。

遞歸可以實現。

如果是葉子節點(文件)了,就輸出這個葉子節點的名稱,返回。

否則,輸出這個節點的名稱(文件夾),並以這個結點再次作為根節點,遍歷輸出它的所有子節點。

-- coding: utf-8 --

import os

def traverse(f):
fs = os.listdir(f)
for f1 in fs:
tmp_path = os.path.join(f,f1)
if not os.path.isdir(tmp_path):
print(‘文件: %s‘%tmp_path)

else:
print(‘文件夾:%s‘%tmp_path)
traverse(tmp_path)

path = ‘F:/source_files/python/‘
traverse(path)
有個問題需要註意的是,用 os.listdir() 這個函數,只會返回路徑下的所有文件名(而這些文件名不含路徑)……
所以要寫成絕對路徑。可以用 os.path.join 這個函數。

In [1]: import os
In [2]: os.path.join(‘a‘,‘b‘)
Out[2]: ‘a\b‘

也可以調用 os.walk 這個函數。

import os

path = ‘F:/source_files/python/‘

for fpathe,dirs,fs in os.walk(path):
for f in fs:
print(os.path.join(fpathe,f))
返回的是一個三元 tupple(dirpath, dirnames, filenames),
其中第一個為起始路徑,第二個為起始路徑下的文件夾, 第三個是起始路徑下的文件。
dirpath 是一個 string,代表目錄的路徑,
dirnames 是一個 list,包含了 dirpath 下所有子目錄的名字,
filenames 是一個 list,包含了非目錄文件的名字,這些名字不包含路徑信息。如果需要得到全路徑, 需要使用 os.path.join(dirpath, name)。

當然,你也可以使用設計器的組件查找文件組件,該組件返回的是一個 list
相關帖子

Python:遍歷輸出某路徑下的所有文件和文件夾