我想创建一个智能DiscFree指标。
代码:
import os
os.system("df -h")
我想使用正则表达式(以MB为单位剪切大小),但我不能,因为该函数返回磁盘空间并且值为“0”。
result = os.system("df -h")
变量“result”为“0”。
如何访问磁盘空间并使用它?
答案 0 :(得分:1)
使用subprocess
来调用控制台命令:
import subprocess
def command(cmd):
try:
p = subprocess.Popen(cmd, shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, close_fds = True)
stdout = p.communicate()
return stdout[0]
except Exception as ex:
raise Exception(ex)
df = command("df -h")
print(df)
打印哪些:
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 233Gi 160Gi 72Gi 69% 42083619 18985821 69% /
devfs 187Ki 187Ki 0Bi 100% 648 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
答案 1 :(得分:0)
使用os.popen
代替os.system
import os
result = os.popen("df -h").read()
print result
注意: os.popen从Python 2.6开始不推荐使用,subprocess
自python 2.4起可用,所以如果你想让代码在Python上工作> = 2.6使用{{1}如果支持Python< 2.4是重要的用途subprocess
。
答案 2 :(得分:0)
作为替代方案,您可以考虑使用一些库函数来获取可用空间:
import os
s = os.statvfs('/')
print (s.f_bavail * s.f_frsize) / 1024**2