python - python 3 与 python 2 中的 ConfigParser

标签 python python-3.x 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(),但是py3中read_file()已经换掉了!傻,傻我。

关于python - python 3 与 python 2 中的 ConfigParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47125695/

相关文章:

Python 将字典内容写入 ConfigParser

python - 使用 python "ConfigParser"编辑 ini 文件会将所有 ini 条目替换为较低的键

python - 将日志记录配置包含在 configparser 读取的文件中

python - 在字符串列表中搜索整数

以相反顺序访问 numpy 数组的 Pythonic 方法

python - Python 中函数的条件修饰

python-3.x - Keras 自定义层/约束来实现相等的权重

python - pip install psycopg2 损坏 - 警告 : unused function 'Dprintf'

python - AWS lambda - 每次执行后发布/tmp 存储

django - 使用 Haystack 时出现 ValueError : Signal receivers must accept keyword arguments (**kwargs).