鱼C论坛

 找回密码
 立即注册
查看: 4162|回复: 3

如何解决ini中同一个section下重复的key

[复制链接]
发表于 2023-11-7 09:47:16 | 显示全部楼层
在处理INI文件时,可以使用 configparser 模块来读取和修改配置文件。对于重复的key,可以使用 remove_option() 方法来删除前面的key,保留后面的key。

在你的代码中,你已经使用了 remove_option() 方法来删除重复的key,但是你需要将其放在正确的位置。在遍历 target_dict 之前,你应该先读取配置文件并创建 config 对象。然后,在遍历 target_dict 时,检查是否存在重复的key,并在存在时删除它。最后,将更新后的配置文件写回到文件中。

下面是修正后的代码:

  1. import configparser

  2. def refresh_data(model_dict, model_file):
  3.     target_dict = model_dict
  4.     target_file = model_file

  5.     for filename in target_file:
  6.         config = configparser.ConfigParser()
  7.         config.optionxform = lambda option: option
  8.         config.read(filename)

  9.         for dict_key in target_dict.keys():
  10.             file_name, ini_key = dict_key.split(':')
  11.             if config.has_option(file_name, ini_key):
  12.                 config.remove_option(file_name, ini_key)
  13.             config.set(file_name, ini_key, str(target_dict[dict_key]))

  14.         with open(filename, 'w') as cfgfile:
  15.             config.write(cfgfile)
复制代码


希望这可以帮助到你!如果你有任何其他问题,请随时问我。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 07:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表