python 3和python 2中的ConfigParser

唯心利他主义者

我一直在缓慢地进行从py2-> py3的过渡,遇到了一个我无法完全解决的问题(就像我确定问题是微不足道的一样)。当我执行以下代码时,配置文件似乎没有节:(

我哪里迷路了?

值得注意的是,我确实从python 2脚本重用了这段代码(用新的configparser.ConfigParser替换了旧的ConfigParser.SafeConfigParser)。我认为这个事实无关紧要,但也许是吗?显然,我不知道:)

这是项目/ main.py

import inspect
import os
import utilities.utilities

def main():
    config_ini_path = os.path.abspath(inspect.getfile(inspect.currentframe()).split('.py')[0] + '_config.ini'
    print(config_ini_path)
    config = utilities.utilies.get_config(config_ini_path)
    print(config.sections())

if __name__ == "__main__":
    main()

这是project / utilities / utilities.py:

import os
import configparser
import inspect
import sys

def get_config(config_file_path=os.path.abspath(inspect.getfile(inspect.currentframe()).split('.py')[0]) + '_config.ini'):
    parser = configparser.ConfigParser()
    if os.path.exists(config_file_path):
        with open(config_file_path, 'r') as config_file:
            parser.read(config_file)
            return parser
    else:
        print('FAILED TO GET CONFIG')
        sys.exit()

def set_config(parser, config_file_path):
    if os.path.exists(config_file_path):
        with open(config_file_path, 'w') as config_file:
        parser.write(config_file)
    else:
        print('FAILED TO SET CONFIG')
        sys.exit()

最后,这是project / project_config.ini:

[logging]
json_config_path = /project/logging.json

有趣的是,如果我添加

config['logging'] = {'json_config_path':'project/other.json'}
utilities.utilities.set_config(config, config_ini_path)
print(config.sections())

所做的更改将被写入文件,但是重新执行后,将不会被撤回(如.sections()所见证)。

我确定我缺少一些简单的东西!是什么赋予了?

唯心利他主义者

原来.read()接受文件名,并.read_file()接受文件类型。最初,我使用.readfp(),但read_file()已在py3中将其替换!傻,傻我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章