Pyhon 獲取文件夾的大小統計


通過Python 實現文件夾大小的統計:主要是通過了 import os 中的幾個方法來實現。

                                            --Zero

Python OS 文件/目錄方法

首先介紹用到的幾個函數,寫了一個小demo便於理解。

 

os.getcwd()

返回當前路徑。 

os.listdir (path)

返回當前路徑下的文件夾與文件(不向下二級遞歸)。

os.path.join()

join() 方法用於將序列中的元素以指定的字符連接生成一個新的字符串。

os.path 讓join()識別為路徑,根據系統自動補齊'\' '/'。

os.path.getsize(path)  返回文件大小

 1 # -*- encoding: utf-8  -*_
 2 import os
 3 
 4 path = os.getcwd() # 獲取當前路徑
 5 for dirs in os.listdir(path):
 6     print dirs
 7 
 8 file_name = "路徑補齊.txt"
 9 path = os.path.join(path,file_name)
10 print path
11 size = os.path.getsize("E:\PythonEclipse\PythonStudy\os.listdir\listdirs.py")
12 print size

輸出結果:

1 A
2 B
3 C
4 file.txt
5 listdirs.py
6 E:\PythonEclipse\PythonStudy\os.listdir\路徑補齊.txtA
7 303

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

top -- 根目錄下的每一個文件夾(包含它自己), 產生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名】。

topdown --可選,為True或者沒有指定, 一個目錄的的3-元組將比它的任何子文件夾的3-元組先產生 (目錄自上而下)。如果topdown為 False, 一個目錄的3-元組將比它的任何子文件夾的3-元組后產生 (目錄自下而上)。

onerror -- 可選,是一個函數; 它調用時有一個參數, 一個OSError實例。報告這錯誤后,繼續walk,或者拋出exception終止walk。

followlinks -- 設置為 true,則通過軟鏈接訪問目錄。

1 # -*- encoding: utf-8  -*_
2 import os
3 
4 for root, dirs, filename in os.walk(os.getcwd()):
5     print root
6     print dirs
7     print filename

輸出結果:

 1 E:\PythonEclipse\PythonStudy\os.listdir
 2 ['A', 'B', 'C']
 3 ['file.txt', 'listdirs.py']
 4 E:\PythonEclipse\PythonStudy\os.listdir\A
 5 []
 6 []
 7 E:\PythonEclipse\PythonStudy\os.listdir\B
 8 []
 9 ['file.txt']
10 E:\PythonEclipse\PythonStudy\os.listdir\C
11 []
12 []

功能實現思路:

需要獲取文件夾的大小,只要遍歷文件下所有的文件,獲取所有文件大小求和即可。

這里是實現的是當前目錄下,文件夾大小不包括當前文件下文件大小。

python的編碼的格式,需要注意。

 1 # -*- encoding: utf-8 -*-
 2 import os
 3 rootdir = os.getcwd()               #獲取當前路徑
 4 
 5 rootdir = rootdir.decode('gbk')
 6 x  = u'統計文件大小.csv'
 7 f = open(os.path.join(rootdir,x), "w+")
 8 for dirname in  os.listdir(rootdir):  #獲取二級目錄所有文件夾與文件
 9     Dir = os.path.join(rootdir, dirname)    #路徑補齊
10     count = 0
11     if (os.path.isdir(Dir)):           #判斷是否為目錄
12         for r, ds, files in os.walk(Dir): #遍歷目錄下所有文件根,目錄下的每一個文件夾(包含它自己), 產生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名稱】
13             for file in files:      #遍歷所有文件
14                 size = os.path.getsize(os.path.join(r, file)) #獲取文件大小
15                 count += size
16         if ((count/1024.0/1024.0) < 1024):
17             print  Dir +'\t' + '%.2f'% (count/1024.0/1024.0)+'MB'
18             f.write(Dir.encode("gbk") +','+  '%.2f'% (count/1024.0/1024.0)+'MB' + '\n')
19         else:
20             print  Dir + '\t' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB'
21             f.write(Dir.encode("gbk") + ',' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB' + '\n')
22     else:
23         continue
24 f.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM