2016-08-25 19 views
0

WIDからdeviceIDを取得できますが、そのdeviceIDを使用して気象デバイスが有効になっていることを確認します\無効な状態であり、ステータスがOKかどうかは基本的にWQLこのUSBデバイス固有のDeviceIDを使用して、そのデバイスに後で照会します。ここで私が使用してWQLを使用してDeviceIDでUSBデバイスを照会

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) 

で例外が発生しましたコード例はある私は、私は次のエラーを取得するこのコードを実行すると:

Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\wmi.py", line 1009, in query
return [ _wmi_object (obj, instance_of, fields) for obj in self._raw_query(wql) ]
File "C:\Python27\lib\site-packages\win32com\client\util.py", line 84, in next return _get_good_object_(self.iter.next(), resultCLSID = self.resultCLSID)
pywintypes.com_error: (-2147217385, 'OLE error 0x80041017', None, None)

あなたは私与える可能性があり、おそらく私のWQLクエリは、どういうわけか間違っていますクエリを構成する正しい方法の例?

答えて

0

\はWQLでspecial characterであり、あなたのdevidは、このする必要がありますので、バックスラッシュでエスケープする必要があります。

devid = "'USB\\VID_04F2&PID_B315\\6&EF94D1A&0&6'" 

編集:私はまた、あなたがそう、私は単一引用符を追加した定数をラップしていないことに気づきました値の周り。

+0

文字列を '\'から '\\'に変換する方法はありますか? – user6603026

+0

古いバージョンのPythonを使用している場合、簡単な方法は 'Replace'メソッドですが、本当に' Regex' https://docs.python.org/3/library/re.htmlを学ぶべきです。 Pythonの文字列操作に不可欠です。 ( '.Sub'関数に特に注意してください) – Tim

関連する問題