Python 2.7 ConfigParser 中的 ExtendedInterpolation()
ExtendedInterpolation() in the Python 2.7 ConfigParser
我有 Python 脚本用 3.x 版本编写,由于环境限制,我需要在 2.7 中进行转换。
我设法重构了大部分语法差异和模块导入,但我遇到了一行我不知道如何处理的代码:
def readConfigFile(self, file):
config = ConfigParser.ConfigParser(interpolation = ConfigParser.ExtendedInterpolation())
config.optionxform = str
config.read(file)
**config = ConfigParser.ConfigParser(interpolation = ConfigParser.ExtendedInterpolation())**
我在这里找到了一些参考(
Python ConfigParser interpolation from foreign section) ,但我不知道如何替换(重构)。
ConfigParser :
在 2.7 版本中:https://docs.python.org/2/library/configparser.html,但 ExtendedInterpolation() 不存在
在 3.x 版本中:https://docs.python.org/3.2/library/configparser.html,
所以我的问题是,有没有什么方法可以重构上面的代码以在 python 2.7 中工作并保留功能?
如另一个问题 (Python ConfigParser interpolation from foreign section) 所述,不,不幸的是,没有一种简单的方法可以做到这一点。您需要为返回值创建自己的解析器并迭代它们。不过这似乎有点笨拙。
我通过使用
让这个在 ArcPy 2.7 中工作
from backports import configparser
config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
config.read('path/to/the/config_file.cfg')
然后我在配置文件中使用了以下代码:
[Section 1]
foo: bar
...
[Section 5]
foo: ${Section1:foo}
在解释器中尝试调用会产生预测结果:
config['Section 5']['foo']
>>> bar
我有 Python 脚本用 3.x 版本编写,由于环境限制,我需要在 2.7 中进行转换。
我设法重构了大部分语法差异和模块导入,但我遇到了一行我不知道如何处理的代码:
def readConfigFile(self, file):
config = ConfigParser.ConfigParser(interpolation = ConfigParser.ExtendedInterpolation())
config.optionxform = str
config.read(file)
**config = ConfigParser.ConfigParser(interpolation = ConfigParser.ExtendedInterpolation())**
我在这里找到了一些参考( Python ConfigParser interpolation from foreign section) ,但我不知道如何替换(重构)。
ConfigParser :
在 2.7 版本中:https://docs.python.org/2/library/configparser.html,但 ExtendedInterpolation() 不存在
在 3.x 版本中:https://docs.python.org/3.2/library/configparser.html,
所以我的问题是,有没有什么方法可以重构上面的代码以在 python 2.7 中工作并保留功能?
如另一个问题 (Python ConfigParser interpolation from foreign section) 所述,不,不幸的是,没有一种简单的方法可以做到这一点。您需要为返回值创建自己的解析器并迭代它们。不过这似乎有点笨拙。
我通过使用
让这个在 ArcPy 2.7 中工作from backports import configparser
config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
config.read('path/to/the/config_file.cfg')
然后我在配置文件中使用了以下代码:
[Section 1]
foo: bar
...
[Section 5]
foo: ${Section1:foo}
在解释器中尝试调用会产生预测结果:
config['Section 5']['foo']
>>> bar