繁体   English   中英

python 3中的ConfigParser与python 2相比

[英]ConfigParser in python 3 vs python 2

我一直在慢慢地从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()

这是项目/ 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_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中取代了它! 傻,傻我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM