我有以下代码收集连接到计算机的设备列表,它返回一个UDID:然后是序列号,所以正确的返回看起来像这样
[UDID:340ad1234dfawd123,UDID:123ads345ads45112]
我当前的代码正确地返回这些代码然而我需要它只给我序列号,这样我就可以从一个序列号循环到下一个序列号,这样就可以逐个测试它们。
我目前的代码如下:
def list_devices():
out = subprocess.getoutput([GBTest, '--list-devices'])
DEVICES = [out]
UDID = out.split(' : ')[-1]
#return UDID
items=re.findall("UDID: *.*",UDID,re.MULTILINE)
return items
我如何添加一条只能作为序列号的行,以便我可以从一个运行到下一个?
非常感谢您对新用户的帮助!
以下是
的示例值名称:SM-900 | UDID:1234adawdawd1231244adaw
姓名:电话| UDID:7891263ajbd092173
答案 0 :(得分:1)
好的,这里有几种方法:
首先,这是我的测试输入
input = ['Name: SM-900 | UDID: 1234adawdawd1231244adaw',
'Name: phone | UDID: 7891263ajbd092173']
这是一个使用该输入列表的方法。
def new_list_devices(devices):
serial_numbers = [] # init an empty list to store results
for entry in devices: # create a loop for each device listed
serial_numbers.append(entry.split(': ')[-1]) # append the split value
return serial_numbers # return it
您可以使用
进行测试print(new_list_devices(input))
它输出给我:
['1234adawdawd1231244adaw','7891263ajbd092173']
现在改进:
def better_new_list_devices(devices):
return [entry.split(': ')[-1] for entry in devices]
print(better_new_list_devices(input))
产生相同的输出。
更好的方法是使用列表理解来构建列表并直接返回。
您需要适应的唯一事情是确定如何获取方法的输入。你可以
def better_new_list_devices():
return [entry.split(': ')[-1] for entry in subprocess.getoutput([GBTest, '--list-devices']]
或者如果那太多分手了
def better_new_list_devices():
devices = subprocess.getoutput([GBTest, '--list-devices']
return [entry.split(': ')[-1] for entry in devices]
或者您甚至可以将输入列表作为参数传递,所以
def better_new_list_devices(devices):
return [entry.split(': ')[-1] for entry in devices]
用
调用better_new_list_devices(subprocess.getoutput([GBTest, '--list-devices'])