如何在python中“配置”?

2024-05-08 08:57:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中编写配置文件并访问它们的最佳方法是什么。我做了一些基础工作,发现了ConfigParser*.ini文件耦合在一起。这样做是最好的方法还是有其他方法?在

[编辑]我正在进行一个项目,以检测系统中的异常并通知我。所以当应用程序启动时,我会读取一些值,比如tou email_address,from_email_password等,这些值与我运行代码的机器无关。例如,托管我的网站的机器将向我的个人id发送通知。运行特定服务的计算机可能会通知我的开发人员。所以我想把它们和代码库分开。在


Tags: 文件项目方法代码机器应用程序编辑email
3条回答

这是一个基于观点的问题,所以我将分享我的观点。在

  • .ini文件是简单配置文件的好选择。这样的文件是公平的 可读性强,易于手工编辑。而且,Windows用户可能已经对它们很熟悉了。

  • JSON有一个相当轻量级的语法,可以处理嵌套的 配置设置(选项内的选项)使用嵌套 字典或列表。它也是类型化的(尽管支持类型 是基本的)以便您可以区分数字、字符串和 很容易丢失数据(在Python中作为None接收)。It互操作 使用JavaScript非常容易,因此如果 配置将与Web应用共享。

  • XML比JSON更详细,但更灵活,您可以 (理论上)定义模式,确保从中接收有效数据 否则它根本不会解析。不幸的是这会让他们 如果用户手工编辑而不知道 限制。javaland中的每个人都使用XML,所以如果您使用XML 希望以某种方式与Java进行互操作,这可能会提示 对它有利的尺度。

  • 我对YAML知之甚少,但这是另一种选择。快速看一下:与JSON或XML相比,它似乎更具可读性和更易于编辑,但它支持某种层次结构,将其放在.ini文件和JSON之间。

Python有用于读写所有这些格式的库。它们都是基于文本的,如果您希望您的用户希望将配置文件置于版本控制之下,就像服务器或系统管理工具一样,这是很好的选择。此外,许多文本编辑器将为此类文件提供方便的突出显示功能。在

您还可以选择使用pickle模块存储数据。这样做的好处是,它是一种原生的Python格式,因此您可以对大多数类型的对象(甚至是您自己的类型)进行pickle,并精确地返回您编写的内容。但是,如果用户需要手动编辑配置文件,那么它根本就不是用户友好的,而且它也不能很好地与其他语言一起使用。如果您提供一个GUI来编辑设置,并且没有太多的GUI,那么这可能是合适的。在

ConfigParser适用于简单的用例。如果您有复杂的配置,其中不知道传递给应用程序的所有配置数据的类型,那么您可能需要研究一些更健壮的东西,比如YAML。在

由于我没有名气,所以我不能投赞成票,我将在这里提供我自己的答案。 ConfigParser非常好,因为它会自动忽略读取不在那里的inifile。 因此,要像lzkata建议的那样从代码中提供默认值,可以执行以下操作:

import ConfigParser
conf = ConfigParser.ConfigParser()

conf.add_section("base")
conf.set("base","path","/")

conf.read("config.ini")
conf.write(open("config.ini","w"))

print conf.get("base","path")

第一次运行程序后配置.ini'文件在那里,如果您更改文件中的值,当您重新运行程序时,它将被反映出来。在

相关问题 更多 >