You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux/树莓派下用Python读取硬盘电源状态?

用Python通过UDisks2 D-Bus读取硬盘电源状态(Linux/树莓派)

要读取硬盘的电源状态(active/standby/sleep),你可以通过UDisks2的D-Bus接口调用org.freedesktop.UDisks2.Drive.Ata.PmGetState方法,以下是完善后的代码实现:

完整代码

from pydbus import SystemBus

def get_drive_power_state(drive_path):
    bus = SystemBus()
    try:
        # 获取硬盘对应的D-Bus对象
        drive_obj = bus.get("org.freedesktop.UDisks2", drive_path)
        # 调用ATA电源状态查询方法
        state_code = drive_obj.PmGetState()
        
        # 映射状态码到可读的文字描述
        state_map = {
            0: "Active/Idle",
            1: "Standby",
            2: "Sleep"
        }
        return state_map.get(state_code, f"Unknown state ({state_code})")
    except Exception as e:
        return f"Error: {str(e)}"


# 替换为你的硬盘对象路径
drive_path = "/org/freedesktop/UDisks2/drives/WDC_WD20NMVW_11EDZS3_WD_WXV1EA57RT6E"
power_state = get_drive_power_state(drive_path)

print(f"Drive Power State: {power_state}")

关键说明

  • 硬盘对象路径:确保drive_path是你目标硬盘的正确对象路径,可通过udisksctl status命令查看系统中挂载的硬盘信息获取。
  • 方法调用逻辑:PmGetState()属于org.freedesktop.UDisks2.Drive.Ata接口,pydbus会自动将D-Bus接口方法映射为对象的可调用方法,直接调用即可返回状态码。
  • 状态码对应关系:
    • 0:Active/Idle(硬盘处于活动或空闲状态)
    • 1:Standby(硬盘进入待机状态,转速降低)
    • 2:Sleep(硬盘进入休眠状态,完全停止运转)
  • 异常处理:捕获可能的错误(如路径无效、硬盘不支持ATA电源管理、权限不足等),避免程序直接崩溃。

内容的提问来源于stack exchange,提问作者Marus Gradinaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:17:31