【问题标题】:Python - How to change the name of a section use configparser? [duplicate]Python - 如何使用 configparser 更改部分的名称? [复制]
【发布时间】:2015-02-19 14:17:31
【问题描述】:

这是我的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]”替换为“[name]”
  4. 使用 configparser 重新读取此 ini 文件。

【问题讨论】:

    标签: python string ini configparser


    【解决方案1】:

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

    为了保证安全更换,最好使用ConfigParser本身的力量。我们将使用ConfigParser 来实现与您的替代方案类似的东西。这是一个伪代码/算法,其中包含一些可用于实现此目的的方法(根据您的问题定制):

    1) 使用以下方式读取 ini 文件:

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

    2) 以 (name, value) 对的形式获取要重命名的部分的所有选项:

    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)
    

    查看docs,了解有关ConfigParser 的所有这些方法和类。

    希望有用。

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多