如何获得USB序列号蟒蛇
问题描述:
我一直摸索了一会儿,这是缠绕了我...这是很容易在C#/如何获得USB序列号蟒蛇
不管怎么说..我发现这个代码,这是最接近我得到了,但是我吮吸正则表达式,所以如果有人能为我缩小这个范围,所以它只隔离每个设备的设备ID,那就太棒了!不管怎么说,这里是代码:
import re
import subprocess
device_re = re.compile("Bus\s+(?P<bus>\d+)\s+Device\s+(?P<device>\d+).+ID\s(?P<id> \w+:\w+)\s(?P<tag>.+)$", re.I)
df = subprocess.check_output("lsusb", shell=True)
devices = []
for i in df.split('\n'):
if i:
info = device_re.match(i)
if info:
dinfo = info.groupdict()
dinfo['device'] = '/dev/bus/usb/%s/%s' % (dinfo.pop('bus'), dinfo.pop('device'))
devices.append(dinfo)
print devices
答
下面的代码只给你的设备ID。
import pprint
import subprocess
df = subprocess.check_output('lsusb', shell=True)
device_ids = []
for line in filter(lambda s: s.startswith('Bus'), df.split('\n')):
businfo, id, _ = line.split(':')
id = id.split()[1]
device_ids.append(id)
pprint.pprint(device_ids)
答
试试这个方法:
import re
import subprocess
device_re = re.compile("Bus\s+(?P<bus>\d+)\s+Device\s+(?P<device>\d+).+ID\s(?P<id>\w+:\w+)\s(?P<tag>.+)$", re.I)
df = subprocess.check_output("lsusb", shell=True)
for i in df.split('\n'):
if i:
info = device_re.match(i)
if info:
dinfo = info.groupdict()
# Uncomment if you wish tags too
#print dinfo.pop('tag')
print dinfo.pop('id')
任何人都可以吗? – amartin94
试着看看udev和D-Bus的东西。 – yegorich