2017-05-17 90 views
0

我有以下的代码集连接到计算机的设备列表它返回一个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

名称:phone | UDID:7891263ajbd092173

+1

只是为了确定,你能提供一个样本值为'ou t'。另外,序列号是第二个“UDID”值?请将样本值放入OP中进行编辑,而不是作为评论。谢谢。 –

+0

如shawn所述,新增样本 – user1304228

+0

请提供'out'和正确代码的样本值,这将帮助我们明确地了解问题 – Mani

回答

1

OK,这里有几个方法:

首先,这里是我的测试输入

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']) 
+0

谢谢先生,拿了点零零碎碎的东西,拿到了我以后的 – user1304228

+0

好。只要记住1)标准的字符串方法是非常强大的,你应该先找到他们,然后再诉诸're' - 你有正确的分割,但是你把你的列表放入另一个列表中,这导致2)考虑代码中每个点的对象类型。我怀疑你在'out'中得到一个列表,所以你不需要'[out]'这是列表的列表。祝你好运 –