【问题标题】:How to append to existing config file using ConfigObj?如何使用 ConfigObj 附加到现有配置文件?
【发布时间】:2019-10-17 21:16:13
【问题描述】:

我正在尝试使用ConfigObj 写入具有函数的配置文件。

#!/usr/bin/evn python3.5

import configobj

def createConfig(path):
    config = configobj.ConfigObj()
    config.filename = path
    config[REFNAME] = {}
    config[REFNAME]['URL'] = URL
    config.write()

REFNAME = input("Enter a reference name :")
URL= input("Enter a URL :")

createConfig('server.ini')

当函数createConfig()被调用时,配置文件被写入,然而,如果脚本再次运行,它会覆盖之前创建的配置文件。我想保留以前的整体并仅添加到文件中,或者在提供相同的REFNAME 时覆盖。

我无法从文档中理解如何执行此操作:

https://configobj.readthedocs.io/en/latest/configobj.html

任何帮助将不胜感激。

【问题讨论】:

  • 您需要提供一个minimal reproducible example 可以运行以重现问题。
  • @martineau 感谢您的链接,我修改了我的问题并提供了一个更好的示例,您可以使用它来重现问题。

标签: python python-3.x configobj


【解决方案1】:

如果将设置文件的路径与 create_empty=True 参数一起传递给 ConfigObj() 初始化程序,它将仅在文件不存在时创建一个空文件,从而允许任何现有文件更新了。

这在文档的ConfigObj specifications 部分进行了解释,其中描述了该方法接受的关键字参数。

import configobj

def createConfig(path):
    config = configobj.ConfigObj(path, create_empty=True)
    config[REFNAME] = {}
    config[REFNAME]['URL'] = URL
    config.write()

REFNAME = input("Enter a reference name: ")
URL= input("Enter a URL: ")

createConfig('server.ini')

请注意,您可能希望将函数名称更改为 openConfig(),因为它现在就是这样做的。

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 2013-07-05
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2013-05-28
    相关资源
    最近更新 更多