使用 Python 获取计算机 USB 设备信息

在这篇文章中,我们将学习如何使用 Python 获取计算机上 USB 设备的信息。这是一个很不错的项目,可以帮助你了解如何与计算机硬件进行交互。在开始之前,我们先了解整个流程,并列出每一步的主要任务。

流程概述

下面表格展示了获取 USB 设备信息的主要步骤:

步骤 描述
1 安装必要的库
2 导入所需的库
3 获取 USB 设备信息
4 处理并展示信息

流程图

下面是整个流程的图示:

flowchart TD
    A[开始] --> B[安装必要的库]
    B --> C[导入所需的库]
    C --> D[获取 USB 设备信息]
    D --> E[处理并展示信息]
    E --> F[结束]

步骤详细说明

第一步:安装必要的库

在 Python 中,有一个叫做 pyusb 的库可以帮助我们与 USB 设备进行交互。首先,你需要确保安装此库。你可以在命令行中运行以下命令来安装:

pip install pyusb

第二步:导入所需的库

安装完 pyusb 库后,我们需要在我们的 Python 脚本中导入该库。以下是代码示例:

import usb.core
import usb.util

这里,usb.core 是使用 pyusb 进行 USB 操作的核心模块,而 usb.util 提供了许多有用的工具函数。

第三步:获取 USB 设备信息

现在,我们可以编写代码来获取 USB 设备的信息。以下是具体的实现代码:

# 查找所有 USB 设备
devices = usb.core.find(find_all=True)

# 为每个设备打印信息
for device in devices:
    print(f"设备 ID: {device.idVendor:04x}:{device.idProduct:04x}")
    print(f"设备描述: {usb.util.lookup(device.idVendor, device.idProduct).bDeviceClass}")
    print(f"厂商: {usb.util.get_string(device, device.iManufacturer)}")
    print(f"产品: {usb.util.get_string(device, device.iProduct)}")
    print(f"序列号: {usb.util.get_string(device, device.iSerialNumber)}")
    print("-------------")

注释代码的说明:

  • usb.core.find(find_all=True):查找所有 USB 设备并返回一个列表。
  • for device in devices::循环遍历每一个设备。
  • device.idVendordevice.idProduct:分别获取设备的厂商 ID 和产品 ID,以十六进制格式打印。
  • usb.util.lookup(device.idVendor, device.idProduct):查找设备的描述信息。
  • usb.util.get_string(device, device.iManufacturer):获取厂商名称。
  • usb.util.get_string(device, device.iProduct):获取产品名。
  • usb.util.get_string(device, device.iSerialNumber):获取设备的序列号。

第四步:处理并展示信息

在上述代码中,我们已经从 USB 设备中提取了许多信息,并打印出来。你可以根据需要格式化输出,使其更具可读性。比如:

print("USB 设备信息:")
print("=================")
for device in devices:
    print(f"厂商 ID: {device.idVendor:04x}")
    print(f"产品 ID: {device.idProduct:04x}")
    print(f"厂商: {usb.util.get_string(device, device.iManufacturer)}")
    print(f"产品: {usb.util.get_string(device, device.iProduct)}")
    print(f"序列号: {usb.util.get_string(device, device.iSerialNumber)}")
    print("-----------------")

这样,你就可以概要地获得每个 USB 设备的所有基本信息。

关系图

为了帮助你更好地理解这个系统的组件之间的关系,下面是一个关系图的示例:

erDiagram
    USB_Device {
        int idVendor
        int idProduct
        string Manufacturer
        string Product
        string SerialNumber
    }

    User {
        string Input
        string Output
    }

    User ||--o{ USB_Device : interacts_with

在这个关系图中,用户可以与多个 USB 设备进行交互,每个 USB 设备都有一些基本的属性,例如厂商 ID、产品 ID、厂商名、产品名和序列号。

结论

通过以上步骤,相信你已经能够使用 Python 获取计算机的 USB 设备信息了。在实际开发中,能够与硬件对话是非常重要的一项能力。随着你的技能提升,你可以进一步扩展这个项目,加上设备的控制和管理等功能。

希望这篇文章对你有所帮助,如果有任何困难,请随时寻求帮助!确保在操作设备时遵循安全实践,并尊重用户的隐私与合法权益。快乐编码!