使用 ConfigParser Python 更改 ini 文件中的值

Posted

技术标签:

【中文标题】使用 ConfigParser Python 更改 ini 文件中的值【英文标题】:Change value in ini file using ConfigParser Python 【发布时间】:2015-03-13 21:18:11 【问题描述】:

所以,我有这个 settings.ini :

[SETTINGS]

value = 1

还有这个python脚本

from ConfigParser import SafeConfigParser

parser = SafeConfigParser()
parser.read('settings.ini')

print parser.get('SETTINGS', 'value')

如您所见,我想读取值“1”并将其替换为另一个值。到目前为止,我所能做的就是阅读它。我在网上搜索了如何替换它,但没有找到。

【问题讨论】:

【参考方案1】:

Python 官方docs on configparser 说明了如何读取、修改和编写配置文件。

import configparser

config = configparser.ConfigParser()
config.read('settings.ini')
config.set('SETTINGS', 'value','15')

with open('settings.ini', 'w') as configfile:
    config.write(configfile)

【讨论】:

【参考方案2】:

我遇到了问题:with open

其他方式:

import configparser

def set_value_in_property_file(file_path, section, key, value):
    config = configparser.RawConfigParser()
    config.read(file_path)
    config.set(section,key,value)                         
    cfgfile = open(file_path,'w')
    config.write(cfgfile, space_around_delimiters=False)  # use flag in case case you need to avoid white space.
    cfgfile.close()

可用于修改java属性文件:file.properties

【讨论】:

删除了我原来的 config.ini 文件 @skpro19 我在 linux 上再次尝试并获胜。 ini 和属性文件的行为相同。删除文件没有问题。赢 (python 3.4.1) linux (python 3.6.8)。我正在尝试各种文件/目录访问配置 不需要证明为什么不使用with open ..。您的解决方案有效。只有评论有一个小错字(“case case”)和Java相关的properties file注释在这里有点混乱,因为问题是关于INI file?️【参考方案3】:

以下示例将帮助更改 ini 文件中的值:

PROJECT_HOME="/test/"
parser = ConfigParser()
parser.read("/conf/cdc_config.ini".format(PROJECT_HOME))
parser.set("default","project_home",str(PROJECT_HOME))


with open('/conf/cdc_config.ini'.format(PROJECT_HOME), 'w') as configfile:
    parser.write(configfile)
[default]
project_home = /Mypath/

【讨论】:

【参考方案4】:

从文档的例子来看:

https://docs.python.org/2/library/configparser.html

parser.set('SETTINGS', 'value', '15')


# Writing our configuration file to 'example.ini'
with open('example.ini', 'wb') as configfile:
    parser.write(configfile)

【讨论】:

对于 Python 3.5+,你必须使用 'w',而不是 'wb'! SafeConfigParser deprecated ``` DeprecationWarning: SafeConfigParser 类已在 Python 3.2 中重命名为 ConfigParser。此别名将在以后的版本中删除。直接使用 ConfigParser。 'os':operating_system, 'arch':arch) ``` 如果你让你的代码成为一个完整的例子,它会显示parser的声明并且文件名将匹配给定的问题,即'settings.ini'以实际更改文件内容.

以上是关于使用 ConfigParser Python 更改 ini 文件中的值的主要内容,如果未能解决你的问题,请参考以下文章

python的ConfigParser模块

python学习第五十三天configParser模块的使用

python的ConfigParser模块

configparser 在python3下的简单使用

python的ConfigParser模块

python 之configparser模块