使用Python计算跨平台卷剩余空间

77 投票
12 回答
49141 浏览
提问于 2025-04-11 09:20

我想要一种方法,能用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的相关文档。

撰写回答