0

私はしばらくの間探し回っていましたが、これは私を巻き上げています...これはC#で簡単でした:/

とにかく..私が得た最も近いこのコードを見つけましたが、正規表現が苦手なので、誰かが私のためにそれを絞り込んで、各デバイスのデバイス 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
4

2 に答える 2

1

この方法を試してください:

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')
于 2014-04-02T13:10:23.477 に答える
1

以下のコードは、デバイス 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)
于 2014-04-02T13:43:37.087 に答える