不要理解这个ConfigParser.InterpolationSyntaxError

时间:2017-05-24 11:10:55

标签: python string-interpolation configparser

所以我试着为我的脚本编写一个小配置文件,它应该指定一个IP地址,一个端口和一个URL,它应该通过使用前者到变量的插值来创建。我的config.ini看起来像这样:

[Client]
recv_url : http://%(recv_host):%(recv_port)/rpm_list/api/
recv_host = 172.28.128.5
recv_port = 5000
column_list = Name,Version,Build_Date,Host,Release,Architecture,Install_Date,Group,Size,License,Signature,Source_RPM,Build_Host,Relocations,Packager,Vendor,URL,Summary

在我的脚本中,我按如下方式解析此配置文件:

config = SafeConfigParser()
config.read('config.ini')
column_list = config.get('Client', 'column_list').split(',')
URL = config.get('Client', 'recv_url')

如果我运行我的脚本,会导致:

Traceback (most recent call last):
  File "server_side_agent.py", line 56, in <module>
    URL = config.get('Client', 'recv_url')
  File "/usr/lib64/python2.7/ConfigParser.py", line 623, in get
    return self._interpolate(section, option, value, d)
  File "/usr/lib64/python2.7/ConfigParser.py", line 691, in _interpolate
    self._interpolate_some(option, L, rawval, section, vars, 1)
  File "/usr/lib64/python2.7/ConfigParser.py", line 716, in _interpolate_some
    "bad interpolation variable reference %r" % rest)
ConfigParser.InterpolationSyntaxError: bad interpolation variable reference '%(recv_host):%(recv_port)/rpm_list/api/'

我尝试过调试,结果又给了我一行错误代码:

...
ConfigParser.InterpolationSyntaxError: bad interpolation variable reference '%(recv_host):%(recv_port)/rpm_list/api/'
Exception AttributeError: "'NoneType' object has no attribute 'path'" in <function _remove at 0x7fc4d32c46e0> ignored

我在这里被困住了。我不知道这个_remove功能应该在哪里......我试着搜索该消息应该告诉我的内容,但坦率地说我不知道​​。所以......

  1. 我的代码有问题吗?
  2. 什么&#39;&lt; function _remove at ...&gt;&#39;意味着吗

1 个答案:

答案 0 :(得分:4)

我的config.ini文件确实存在错误。我并不认为s末尾的%(...)s是必要的语法元素。我想它指的是“字符串”,但我无法确认这一点。