【问题标题】:reading and writing cfg files in python在python中读写cfg文件
【发布时间】:2013-06-21 05:19:04
【问题描述】:

我正在尝试在 python 中读取和写入 cfg 文件。 我已经尝试过名为 configparser 的包,但它抱怨缺少标题,因为它显然不理解我的文件的格式。 我想知道您对此的看法,以便尽可能轻松地完成此任务。注意:我需要坚持这种格式。

这是我的文件格式:

PROFILE_PERIODS =
(    // note that this is not a curly brace
        {       //comment
                PRIORITY = 1;
        },

        {       //comment
                DESCRIPTION = "drgdfth";
        }
)
TIME_SYNCHRONIZATION =
{
        INTERVAL = 100;
}

这个配置文件也被一个名为 libconfig 的 c 库读取。 谢谢

【问题讨论】:

  • 你看过this吗?
  • 或者this
  • 你能控制配置文件的格式吗?如果是这样,您可能不必发明另一种配置文件格式™ 在这种情况下,由于您的格式非常接近JSON,因此您可以使用corresponding standard Python library 进行一些小的调整解析它。
  • 感谢 cmets。我认为第一个链接(python-libconfig)非常有前途。我尝试安装它并且 make 和 make install 没有错误。但是当我尝试在 python 中导入它(从 pylibconfig import Config)时,它说找不到该模块。有没有人有建议。我需要弄清楚如何安装它——最好是如何在 virtualenv 中安装它。谢谢

标签: python file parsing configuration


【解决方案1】:

您的文件看起来像 libconfig 格式,这在 C/C++ 世界中相当普遍。

我编写了python-libconf,一个纯 Python 的 libconfig 文件读取器/写入器。该接口是从json 标准库模块中借用的。很简单:

import libconf
with io.open('file.cfg', encoding='utf-8') as f:
    cfg = libconf.load(f)

它可以通过 pip (pip install libconf) 轻松安装,并且在虚拟环境中运行良好。与其他 Python libconfig 阅读器相比,它是许可许可 (MIT) 和纯 Python(无需编译 C 模块)。

【讨论】:

  • 我没有尝试过,但感谢实现它。似乎是解决方案。
  • 我可以使用 libconf 读取,但是如何使用 libconf 写入 cfg 文件?有什么例子吗?
  • @SaurabhSengar:您可以使用libconf.dump()libconf.dumps()。第一个写入文件对象,第二个产生一个字符串。该接口与json 模块非常相似。
猜你喜欢
  • 2011-08-12
  • 2011-12-02
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2021-07-15
  • 2012-07-12
  • 2012-11-12
  • 1970-01-01
相关资源
最近更新 更多