2017-05-17 128 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]'這是列表的列表。祝你好運 –