使用Python计算跨平台卷剩余空间
我想要一种方法,能用Python在Linux、Windows和OS X上查看磁盘剩余空间。目前我是在解析一些系统命令的输出,比如df和dir,来实现这个功能——有没有更好的办法呢?
12 个回答
30
你可以使用 wmi 这个模块来处理Windows系统,而在Unix系统上可以用os.statvfs。
在Windows系统上使用:
import wmi
c = wmi.WMI ()
for d in c.Win32_LogicalDisk():
print( d.Caption, d.FreeSpace, d.Size, d.DriveType)
在Unix或Linux系统上使用:
from os import statvfs
statvfs(path)
36
首先,你需要通过命令 pip install psutil
来安装一个叫做 psutil 的工具。安装完成后,你就可以用下面的代码来获取电脑上剩余的空间(以字节为单位):
import psutil
print(psutil.disk_usage(".").free)
79
import ctypes
import os
import platform
import sys
def get_free_space_mb(dirname):
"""Return folder/drive free space (in megabytes)."""
if platform.system() == 'Windows':
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes))
return free_bytes.value / 1024 / 1024
else:
st = os.statvfs(dirname)
return st.f_bavail * st.f_frsize / 1024 / 1024
请注意,使用GetDiskFreeSpaceEx()
这个函数时,你必须提供一个目录的名称(而statvfs()
可以用于文件和目录)。你可以通过os.path.dirname()
这个方法从一个文件中获取到目录的名称。
另外,你可以查看os.statvfs()
和GetDiskFreeSpaceEx
的相关文档。