首先介紹用到的幾個函數(shù),寫了一個小demo便于理解。
os.getcwd()
返回當(dāng)前路徑。
os.listdir (path)
返回當(dāng)前路徑下的文件夾與文件(不向下二級遞歸)。
os.path.join()
join() 方法用于將序列中的元素以指定的字符連接生成一個新的字符串。
os.path 讓join()識別為路徑,根據(jù)系統(tǒng)自動補齊'' '/'。
os.path.getsize(path) 返回文件大小
# -*- encoding: utf-8 -*_ import os path = os.getcwd() # 獲取當(dāng)前路徑 for dirs in os.listdir(path): print dirs file_name = "路徑補齊.txt" path = os.path.join(path,file_name) print path size = os.path.getsize("E:PythonEclipsePythonStudyos.listdirlistdirs.py") print size
輸出結(jié)果:
A B C file.txt listdirs.py E:PythonEclipsePythonStudyos.listdir路徑補齊.txtA 303
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
top -- 根目錄下的每一個文件夾(包含它自己), 產(chǎn)生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名】。
topdown --可選,為True或者沒有指定, 一個目錄的的3-元組將比它的任何子文件夾的3-元組先產(chǎn)生 (目錄自上而下)。如果topdown為 False, 一個目錄的3-元組將比它的任何子文件夾的3-元組后產(chǎn)生 (目錄自下而上)。
onerror -- 可選,是一個函數(shù); 它調(diào)用時有一個參數(shù), 一個OSError實例。報告這錯誤后,繼續(xù)walk,或者拋出exception終止walk。
followlinks -- 設(shè)置為 true,則通過軟鏈接訪問目錄。
# -*- encoding: utf-8 -*_ import os for root, dirs, filename in os.walk(os.getcwd()): print root print dirs print filename
輸出結(jié)果:
E:PythonEclipsePythonStudyos.listdir ['A', 'B', 'C'] ['file.txt', 'listdirs.py'] E:PythonEclipsePythonStudyos.listdirA [] [] E:PythonEclipsePythonStudyos.listdirB [] ['file.txt'] E:PythonEclipsePythonStudyos.listdirC [] []
功能實現(xiàn)思路:
需要獲取文件夾的大小,只要遍歷文件下所有的文件,獲取所有文件大小求和即可。
這里是實現(xiàn)的是當(dāng)前目錄下,文件夾大小不包括當(dāng)前文件下文件大小。
python的編碼的格式,需要注意。
# -*- encoding: utf-8 -*- import os rootdir = os.getcwd() #獲取當(dāng)前路徑 rootdir = rootdir.decode('gbk') x = u'統(tǒng)計文件大小.csv' f = open(os.path.join(rootdir,x), "w+") for dirname in os.listdir(rootdir): #獲取二級目錄所有文件夾與文件 Dir = os.path.join(rootdir, dirname) #路徑補齊 count = 0 if (os.path.isdir(Dir)): #判斷是否為目錄 for r, ds, files in os.walk(Dir): #遍歷目錄下所有文件根,目錄下的每一個文件夾(包含它自己), 產(chǎn)生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名稱】 for file in files: #遍歷所有文件 size = os.path.getsize(os.path.join(r, file)) #獲取文件大小 count += size if ((count/1024.0/1024.0) < 1024): print Dir +' ' + '%.2f'% (count/1024.0/1024.0)+'MB' f.write(Dir.encode("gbk") +','+ '%.2f'% (count/1024.0/1024.0)+'MB' + ' ') else: print Dir + ' ' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB' f.write(Dir.encode("gbk") + ',' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB' + ' ') else: continue f.close()
更多Pyhon 獲取文件夾的大小統(tǒng)計相關(guān)文章請關(guān)注PHP中文網(wǎng)!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com