2016-08-30 46 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\"" 

这是你跨线,这可能不是你打算做什么传送的内容。