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

24

所以,我有一个 settings.ini 文件:

[SETTINGS]

value = 1

还有这个 Python 脚本

from ConfigParser import SafeConfigParser

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

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

如您所见,我想读取然后将值“1”替换为另一个值。到目前为止,我只能读取它。我在网上搜索了如何替换它,但没有找到。

4个回答

39

18
对于Python 3.5及以上版本,您需要使用'w'而不是'wb'! - ishahak
SafeConfigParser已被弃用'os':操作系统,'arch':架构})``` - AlperenK
如果您将代码制作成一个完整的示例,它将显示parser的声明,并且文件名将与给定问题匹配,即'settings.ini'以实际更改文件内容。 - hc_dev

7

Python官方关于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)

3

我遇到了一个问题: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
@skpro19 我在 Linux 和 Windows 上再次尝试了一下。ini 和 properties 文件的行为相同。删除文件没有问题。Win(Python 3.4.1)Linux(Python 3.6.8)。我尝试了各种文件/目录访问配置。 - Jan
不需要解释为什么不使用 with open ..。你的解决方案有效。只是评论有一个小错别字(“case case”),并且与Java相关的 properties文件 注意在这里有点混淆,因为问题是关于 INI文件 的。 - hc_dev

1
以下示例将帮助更改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/

问题是,在你的代码片段中,open方法中的这些花括号 {} 是指相对路径吗? - deokyong song
1
@deokyong song 是一种格式化方法。请参阅此链接以获取有关字符串格式化的更多信息。 - Lachlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接