2014-11-20 24 views
0

我有一個python腳本(下面)沒有提供準確的結果。我確信我搞砸了一些東西,但似乎無法弄清楚。我將不勝感激任何意見或建議。確定可用空間的Python腳本提供了不準確的結果

該腳本的用途是報告特定安裝點上剩餘的總磁盤空間百分比。

#!/usr/bin/python 
import os 
disk = os.statvfs("/Volumes/Promotions/") 
totalBytes = float(disk.f_bsize*disk.f_blocks) 
totalUsedSpace = float(disk.f_bsize*(disk.f_blocks-disk.f_bfree)) 
totalAvailSpace = float(disk.f_bsize*disk.f_bfree) 
used = float(totalUsedSpace/1024/1024/1024/1024/1024) 
avail = float (totalAvailSpace/1024/1024/1024/1024/1024) 
total = float (totalBytes/1024/1024/1024/1024/1024) 
percent = ((used)/(total)*100) 

import smtplib 

SERVER = "webmail.****.com" 

FROM = "***@***.com" TO = ["***@***.com"] # must be a list 

SUBJECT = "Hello!" 

TEXT = "Total Available Remaining Percent Full\n" "%.2fTB" % (total) + " " "%.2fTB" % (avail) + " " "%.2fTB" % (used) + " " "%.2f%%" % (percent) 

# Prepare actual message 

message = """\ 
From: %s 
To: %s 
Subject: %s 

%s """ % (FROM, ", ".join(TO), SUBJECT, TEXT) 

# Send the mail 

server = smtplib.SMTP(SERVER) 
server.sendmail(FROM, TO, message) 
server.quit() 

上述發送以下的輸出:

Total 0.2TB Available 0.00TB Remaining 0.01TB Percent Full 83.12% 

的問題是上述的路徑實際上是138 TB在大小與現有23.3 TB

任何輸入或建議將不勝感激。

謝謝! 特里

+2

你爲什麼要除以1024的5倍:

更好的使用轉換函數? 1 TiB是'1024 ** 4'字節,而不是'1024 ** 5'。 – 2014-11-20 19:26:09

+0

你確定你的意思是「剩餘」嗎? – 2014-11-20 19:32:13

+0

gnibbler - 我打錯了剩餘 - 謝謝你指出。我打算放二手。 – 2014-11-20 19:39:58

回答

0

TB = KB * KB * KB * KB

您使用5個部門的1024這將表達字節PB級,而不是太字節。在`float`線

def asTb(numberOfBytes): 
    TB = 1024**4 
    return numberOfBytes/TB 
+0

謝謝你,上面提到。我明顯有點興奮地輸入1024的。這已經清理了一下,它現在顯示更接近,但有些事情仍然關閉,因爲實際大小是138TB - 這就是我所得到的。總計:16.88TB可用:2.85TB使用14.03TB百分比滿:83.12% – 2014-11-20 20:25:41

相關問題