我可以从WMI中获得DeviceID,然后我想使用该deviceID来检查天气设备处于启用\禁用状态,如果它的状态是否正常,基本上我想使用WQL在以后使用这个USB设备唯一的deviceID时查询该设备。下面是我使用并得到异常的代码示例
import wmi
devid = "USB\VID_04F2&PID_B315\6&EF94D1A&0&6"
c = wmi.WMI()
q2 = "SELECT * FROM Win32_PnPEntity WHERE DeviceID = " + devid + " "
dev = c.query(q2)当我运行这段代码时,我会得到以下错误:
回溯(最近一次调用): 文件"",第1行,在 查询文件“C:\Python27 27\lib\site-packages\wmi.py”,第1009行 返回_wmi_object ( obj,instance_of,self._raw_query中的字段) 文件"C:\Python27\lib\site-packages\win32com\client\util.py",第84行,在下一个返回_get_good_object_(self.iter.next(),resultCLSID = self.resultCLSID)中 pywintypes.com_error:(-2147217385,'OLE错误0x80041017',无,无)
也许我的wql查询是错误的,你能给我一个正确的方法来撰写这个查询吗?
发布于 2016-08-25 16:23:56
\是WQL中的特殊字符,必须用反斜杠转义,因此您的devid应该是这样的:
devid = "'USB\\VID_04F2&PID_B315\\6&EF94D1A&0&6'"编辑:我还注意到,您没有包装常量,所以我在值周围添加了一个单引号。
https://stackoverflow.com/questions/39143972
复制相似问题