2013-03-25 39 views
0

我試圖獲取所有文件使用的字節總量。Python - 獲取文件使用的總字節數

到目前爲止我所得到的是以下內容。

def getSize(self): 
    totalsize = 0 
    size = 0 
    for root, dirs, files in os.walk(r'C:\\'): 
     for files in files: 
      size = os.stat(files).st_size 
    totalsize = totalsize + size 

但是,運行這個時候,下面的錯誤彈出FileNotFoundError:[WinError 2]系統找不到指定的文件:「的hiberfil.sys」

有誰知道我該如何解決此錯誤並正確計算磁盤上的總字節數?

編輯:看了這一些後,我想出了以下代碼。

def getSize(): 
    print("Getting total system bytes") 
    data = 0 
    for root, dirs, files in os.walk(r'C:\\'): 
     for name in files: 
      data = data + getsize(join(root, name)) 
    print("Total system bytes", data) 

但是,我現在得到以下錯誤。 PermissionError:[WinError 5]訪問被拒絕: 'C:\\ ProgramData \微軟\ Microsoft反惡意軟件\掃描\歷史\ CacheManager的\ MpScanCache-1.bin'

+1

PL輕鬆閱讀更多關於'os.walk'如何工作。然後錯誤信息會變得更加清晰。提示:您可以嘗試使用'os.path.join()'來構建文件的完整路徑。 – bernie 2013-03-25 23:10:13

+0

查看[本教程](http://code.activestate.com/recipes/66455-to-find-out-the-hard-disk-sizefree-space-and-used-/) – xxmbabanexx 2013-03-25 23:12:39

+0

如果您在最近的窗口,也要注意正確處理硬鏈接,否則SxS緩存會顯示大量錯誤的數字,因爲它包含大量的硬鏈接。 – schlenk 2013-03-25 23:17:08

回答

0

這可能會幫助:

import os 
import os.path 

def getSize(path): 
    totalsize,filecnt = 0,0 
    for root, dirs, files in os.walk(path): 
     for file in files: 
      tgt=os.path.join(root,file) 
      if os.path.exists(tgt): 
       size = os.stat(tgt).st_size 
       totalsize = totalsize + size 
       filecnt+=1 
    return totalsize,filecnt 

print '{:,} bytes in {:,} files'.format(*getSize('/Users/droid')) 

打印:

110,058,100,086 bytes in 449,723 files 

或者,如果它是一個權限錯誤,使用:

  try: 
       size = os.stat(tgt).st_size 
       totalsize = totalsize + size 
       filecnt+=1 
      except (#Permission Error type...): 
       continue 
+0

這正是我正在尋找,謝謝:) – Simon 2013-03-26 13:55:37