问题标签 [configparser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4516 浏览

python - 在 Python ConfigParser 中按字母排序导出

是否有任何解决方案可以强制 RawConfigParser.write() 方法以字母顺序导出配置文件?

即使对原始/加载的配置文件进行了排序,该模块也会任意将部分和选项混合到部分中,手动编辑一个巨大的未排序配置文件真的很烦人。

PD:我正在使用 python 2.6

0 投票
4 回答
8843 浏览

python - 如何从 Python ConfigParser .items() 中排除默认值?

我正在使用 ConfigParser 从配置文件中加载数据,如下所示:

测试.conf:

加载.py:

输出:

我很惊讶变量替换的默认值('datadir', '/tmp')显示为 . items().get()返回,就好像它们是配置文件中的值一样。这种行为是预期的吗?任何变通方法,以便我可以简单地迭代.items()而无需在其中获取默认字典值,但仍使用魔术插值?

参考:http ://docs.python.org/library/configparser.html

谢谢!

更新:有人指出这是预期的行为:默认值就像配置文件中的任何其他名称/值对一样。同样,配置文件中的名称/值对也可用于“魔术插值”,所以如果我定义:

我去拿[... ('zap': 'barnowl')]

这非常简洁,但我仍然想知道我是否可以完成我想要完成的事情:迭代我的配置文件中的名称/值对,使用变量插值,没有默认值。

我的具体情况是这样的:我想用类似的东西初始化配置对象{basedir: '/foo/bar'},因为某些文件的绝对路径因安装而异。然后我需要将该配置对象传递给并让各种其他类遍历文件。我不希望每个读取配置的类都必须知道它是用某些默认值初始化的,并且应该忽略它们,因为它们不是实际文件。这可能吗?有什么方法可以隐藏 .item() 和 .get() 的默认值但仍然有插值?谢谢!

0 投票
3 回答
7686 浏览

python - Python ConfigParser:如何计算在特定部分中设置的选项(而不是默认值)

我有一个使用标准 ConfigParser 库中的 RawConfigParser 读取的配置文件。我的配置文件有一个 [DEFAULT] 部分,后跟一个 [特定] 部分。当我遍历 [specific] 部分中的选项时,它包括 [DEFAULT] 下的选项,这就是要发生的事情。

但是,对于报告,我想知道该选项是在 [特定] 部分还是在 [DEFAULT] 中设置的。有什么办法可以通过 RawConfigParser 的接口来做到这一点,还是我别无选择,只能手动解析文件?(我已经找了一点,我开始担心最坏的情况......)

例如

[默认]

名字=一个

姓氏 = b

[部分]

名称 = b

年龄 = 23

你怎么知道,使用 RawConfigParser 接口,选项 name 和 surname 是从 [DEFAULT] 部分还是 [SECTION] 部分加载的?

(我知道 [DEFAULT] 旨在适用于所有人,但您可能希望在内部报告此类事情,以便通过复杂的配置文件工作)

谢谢!

0 投票
1 回答
1975 浏览

python - python ConfigParser 模块

我有以下ini文件

当我使用 ConfigParser 模块时:

它总是打印 0 有人可以帮忙吗

0 投票
1 回答
961 浏览

python - ConfigParser 中的更新部分(或替代方法)

我正在为另一个程序制作一个插件,所以我试图让事情尽可能轻量级。

我需要做的是能够更新 ConfigParser 的配置文件中的一个部分的名称。

然后我有文本字段,用户可以在其中编辑项目的名称、作者、电子邮件和年份。

我认为更改 [项目名称] 是不可能的,所以我想到了两种解决方案:

1 - 让我的配置文件是这样的:

这样我就可以像其他选项一样更改项目的名称。但问题是,我需要 # 部分自动递增([0]、[1] 等)。要做到这一点,我必须得到每个部分,排序,并弄清楚下一个数字应该是什么。

另一种选择是删除整个部分及其值,并使用更新的值重新添加它,这也需要更多的工作,例如通过函数传递一个保存旧部分名称的变量等,但是如果它更快,我不介意。

两者哪个最好?还是有其他方法?我愿意采用最快/轻量级的解决方案,不管它是否需要更多的工作。

0 投票
3 回答
611 浏览

python - 从配置文件中读取 Pythonic

我有一个使用 ConfigParser 读取配置文件的 python 类:

配置文件:

Python代码:

我觉得最后四行是重复的,应该以某种方式压缩为一个 Pythonic 行,该行将self.item为该部分中的每个项目创建一个变量。

有任何想法吗?

亚当

更新:

根据您的回答,我已将代码修改为:

现在,

0 投票
1 回答
833 浏览

python - 使用 ConfigParser 从配置文件中读取颜色以与 Pygame 一起使用

在配置文件中,我将变量定义为

这应该适用screen.fill于 Pygame 的设置或任何颜色参数。我能做的screen.fill(0,0,0)

我认为的问题是,对于通过 a 读取的整数,configfile我必须int()将字符串转换为 int。对于颜色 int 之类的东西不起作用,我不知道应该使用什么。

那是python的错误。

0 投票
1 回答
271 浏览

python - 哪里是存储 Python 脚本的 Windows 配置文件的好地方/方法?

我有一个我正在处理的脚本/程序,它需要一个配置文件(我正在使用ConfigParser)。在 linux 上,我将默认将这些变量存储在~/.myscript使用os.getenv('HOME')函数中。

使用 Windows,我知道我可以用来查找用户的“主”目录,但是,以这种方式保存隐藏文件(即,使用 name )是否os.getenv('USERPROFILE')是个好主意?.myscript

显然,我不使用 Windows,但希望对那些使用 Windows 的人有所了解。

在 Windows 上是否有标准的位置/方式来存储这些配置变量?

0 投票
2 回答
360 浏览

python - 在 configparser 中不保留大小写(默认情况下)的理由是什么?

如果我想在配置文件中保留键名,我必须添加configparser.optionxform = str. 我对这种( configparser )行为感到惊讶,期望大小写保留是默认(如果不是唯一)选项。

你能理解这个吗?这个决定背后的理由是什么?

0 投票
1 回答
1528 浏览

python - Python,ConfigParser:什么是“神奇插值”

Python 中 ConfigParser 的文档大量讨论了所谓的“神奇插值”功能,但从未解释它的实际作用。我试过搜索它,但没有找到任何答案。