繁体   English   中英

确定可用空间的Python脚本提供了不正确的结果

[英]Python script to determine free space provides inaccurate results

我有一个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

任何意见或建议将不胜感激。

谢谢! 特里

Tb = kb * kb * kb * kb

您使用的是1024除以5的除法,它将字节表示为PB而不是TB。

最好使用转换函数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM