我想创建一个脚本来检测 USB 驱动器插入计算机后的情况,现在只是在 cmd detector中打印。
注意:我在搜索后使用的是 Windows,我发现我需要使用pyudev 包才能与串行端口通信,并且我需要知道 USB 设备的供应商 ID。
我尝试编写以下代码:
import pyudev
context = pyudev.Context()
monitor = Monitor.from_netlink()
# For USB devices
monitor.filter_by(subsystem='usb')
# OR specifically for most USB serial devices
monitor.filter_by(subsystem='tty')
for action, device in monitor:
vendor_id = device.get('ID_VENDOR_ID')
if vendor_id in ['USB\\VID_0930&PID_6544&REV_0100'] or vendor_id in ['USB\\VID_0930&PID_6544']:
print ('Detected {0} for device with vendor ID {1}'.format(action, vendor_id))
Run Code Online (Sandbox Code Playgroud)
但系统崩溃并显示此错误:
import fcntl ModuleNotFoundError: No module named 'fcntl'
Run Code Online (Sandbox Code Playgroud)
我认为 fcntl 仅适用于 Ubuntu,因为我尝试安装该软件包但它不存在。
小智 0
试试这个
import win32file
def locate_usb():
drive_list = []
drivebits = win32file.GetLogicalDrives()
for d in range(1, 26):
mask = 1 << d
if drivebits & mask:
# here if the drive is at least there
drname = '%c:\\' % chr(ord('A') + d)
t = win32file.GetDriveType(drname)
if t == win32file.DRIVE_REMOVABLE:
drive_list.append(drname)
return drive_list
Run Code Online (Sandbox Code Playgroud)
代码实际上取自https://mail.python.org/pipermail/python-win32/2006-December/005406.html
| 归档时间: |
|
| 查看次数: |
9012 次 |
| 最近记录: |