#!/usr/bin/python
# -*-coding: UTF-8 -*-
import os
allFileNum = 0
def printPath(level, path):
global allFileNum
'''''
打印一個目錄下的所有文件夾和文件
'''
# 所有文件
fileList = []
# 返回一個列表,其中包含在目錄條目的名稱(google翻譯)
files = os.listdir(path)
for f in files:
if(os.path.isdir(path + '/' + f)):
if(f[0] != '.'): # 排除隱藏文件夾。因爲隱藏文件夾過多
print '-' * level, f
# 打印目錄下的所有文件夾和文件,目錄級別+1
printPath((level + 1), path + '/' + f) #recursion
if(os.path.isfile(path + '/' + f)):
# 添加文件
fileList.append(f)
for fl in fileList:
# 打印文件
print '-' * level, fl
# 隨便計算一下有多少個文件
allFileNum = allFileNum + 1
print "Please enter the directory path you want to list all file info: "
yourPath = raw_input()
if __name__ == '__main__':
printPath(level = 1 , path = yourPath )
print '總文件數 =', allFileNum
python實現讀取給定文件夾下文件目錄與文件信息(包括子文件夾)
注:由於源代碼在遞歸部分闡述稍欠清晰,文中所示爲改寫之後的遞歸代碼,測試後與源代碼功能相同
以下展示了一個功能是打印文件夾目錄的python代碼,注意程序的第20行,存在一處遞歸調用,現對代碼做出分析如下:
需求分析:我們需要打印出一個給定文件夾下所有文件信息,如果存在子文件夾,則需要打印子文件夾的相關信息,如果子文件夾下還有子文件夾,同理我們需要這個子子文件夾的信息。換言之,給定文件目錄下,所有層級的文件信息我們都要讀取出來
算法分析:在這個問題中,我們無法知道給定的文件目錄下到底有多少層級的子文件夾。在這個時候我們能夠想到的應該是使用遞歸算法,當遞歸到最後一個層級的子文件夾時,沒有其他子文件夾可以遍歷,那麼函數會逐級返回,從而我們獲得了所需要的文件目錄結構。
具體實現:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.