2016-08-30 55 views
0

我有一個包含類似文本文件:在字符串發送vs雷丁字符串

IP_ADD = "10.10.150.3" 
BACKUP_IP = "10.10.150.4" 

和代碼來閱讀:

counter = 0 
wordList = [None] * 100 

with open("config.txt") as f: 
    content = f.read().splitlines() 

for line in content: 
    line = line.split(' ',2)[-1] 
    wordList[counter] = line 
    counter = counter + 1 

將回到我剛纔的IP地址與wordList裏面的引號。IE

wordList[0] = "10.10.150.3" 

然後,我嘗試使用OID和IP地址發送SNMP命令。 IE

agent.set(MY_OID,wordList[0]) 

但這是行不通的。如果我將其更改爲以下內容:

agent.set(MY_OID,"10.10.150.3") 

它的工作原理。我在這裏錯過了什麼?

+1

邊注:有沒有必要讀與'f.read整個文件()'然後拆分,然後循環在線上。只要做到:'對於f:中的行,並在從文件中讀取每行時循環。更多Pythonic ... – dawg

+0

第二方面注意:不要使用'wordList = [None] * 100'創建一個空列表,只需在頂部使用'word_list = []',然後使用'word_list.append(new_thing)'來添加到列表中。這也消除了對「counter」的需求。如果確實需要一個計數器,使用'enumerate'並且啓動和遞增是自動的... – dawg

回答

0

你幾乎知道了,你只需要去掉你的IP地址的雙引號。使用strip('"')來做到這一點。

line.split(' ',2)[-1].strip('"') 

你的代碼看起來太寒酸,沒有犯罪。你正在做的事情很多都是沒有必要的。你可以做很多隻是這樣:

wordList = [] 
with open('config.txt') as file: 
    for line in file: 
     wordList.append(line.split()[-1].strip('"')) 

print(wordList) 

輸出:

['10.10.150.3', '10.10.150.4'] 
3

從你寫的內容看來,你的文件的IP地址在引號中。 因此

line = line.split(' ',2)[-1] 

將返回引號的IP地址作爲字符串,又名

"\"10.0.0.1\"" 

這是你跨線,這可能不是你打算做什麼傳送的內容。