【问题标题】:Sending in String vs Reading String发送字符串与读取字符串
【发布时间】:2017-01-07 02:26:17
【问题描述】:

我有一个包含以下内容的文本文件:

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

这将返回给我的只是带有 wordList 内引号的 IP 地址.. IE

wordList[0] = "10.10.150.3"

然后我尝试使用 OID 和该 IP 地址发送 SNMP 命令。浏览器

agent.set(MY_OID,wordList[0])

但这不起作用。如果我将其更改为以下内容:

agent.set(MY_OID,"10.10.150.3")

它有效。我在这里错过了什么?

【问题讨论】:

  • 旁注:无需使用f.read() 读取整个文件,然后将其拆分然后循环遍历行。只需这样做:for line in f: 并在从文件中读取每一行时循环。更多 Pythonic...
  • 第二个附注:不要使用wordList = [None] * 100 创建一个空列表,只需在顶部使用word_list=[],然后使用word_list.append(new_thing) 添加到列表中。这也消除了对counter 的需求。如果确实需要计数器,请使用enumerate,并且会自动启动和递增...

标签: python string file io


【解决方案1】:

您几乎明白了,您只需要去掉 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']

【讨论】:

    【解决方案2】:

    从您所写的内容来看,您的文件似乎在引号中包含 IP 地址。 因此

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

    将以字符串形式返回引号中的 IP 地址,也就是

     "\"10.0.0.1\""
    

    这是您通过网络发送的内容,这可能不是您打算做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 2015-04-24
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多