Python - 如何使用configparser更改部分的名称?

时间:2014-12-21 03:28:37

标签: python string ini configparser

这是我的ini文件

[456789a]
IP=192.168.1.73
AGENTID=1
NEEDSYNCDEFBAK=-1
GROUP=5
[123456]
IP=192.168.1.73
AGENTID=2
NEEDSYNCDEFBAK=-1
GROUP=2

所以..我可以使用configparser来更改某个部分的名称(如.456789a)吗?

如果不能,这是另一种解决方案。

  1. 阅读ini文件
  2. 找到“[456789a]”
  3. 将“[4567891]”替换为“[名称]”
  4. 使用configparser重读此ini文件。

1 个答案:

答案 0 :(得分:1)

进行简单的搜索和替换,就像您提供的替代方案一样,可能存在风险。它可能会更改您可能不想更改的字符串的某些情况。

为了确保安全替换,最好使用ConfigParser本身的强大功能。我们将使用ConfigParser来实现与您的替代方案类似的内容。这是一个伪代码/算法,您可以使用一些方法来实现此目的(根据您的问题自定义):

1)使用以下内容读取 ini 文件:

_config = ConfigParser.ConfigParser()
with open(your_config_file) as config_file:
    _config.readfp(config_file)

2)获取要重命名的部分的(名称,值)对的所有选项:

my_section_to_rename = "456789a"
my_section_items = _config.items(section_to_rename) 

3)添加一个包含您要提供的新名称的部分,作为新部分:

my_section_new_name = "newSectionName"
_config.add_section(my_section_new_name)

4)将前一部分项目中的所有选项添加到这个新项目中:

for option,value in my_section_items:
    _config.set(my_section_new_name, option, value)

5)从ConfigParser对象中删除旧部分:

_config.remove_section(my_section_to_rename)

6)现在将此内容写入 ini 文件以完成此过程。

with open(your_config_file) as config_file:
    _config.write(your_config_file)

查看有关ConfigParser的所有这些方法和课程的docs

希望这很有用。