问题:如何在Python中处理INI文件中同一个section下重复的key?
当在使用 configparser 读取INI文件时出现 DuplicateOptionError 错误,表示在同一个section下存在重复的key,解决方法可以通过以下步骤实现:
1. 保留后面的重复key并删除前面的重复key:def remove_duplicate_keys(config, section): # 获取当前section的所有option options = config.options(section) seen = set() # 用于记录已经出现过的key for option in options[::-1]: # 倒序遍历options if option in seen: config.remove_option(section, option) # 删除重复的key else: seen.add(option) # 将未出现过的key加入seen集合
在你的代码中,你可以在读取INI文件后,对每个section调用 remove_duplicate_keys 函数来处理重复的key。具体调用方法如下:for filename in self.target_file: config = configparser.ConfigParser() config.optionxform = lambda option: option config.read(filename) for section in config.sections(): remove_duplicate_keys(config, section) # 处理重复的key for dict_key in self.target_dict.keys(): file_name, ini_key = dict_key.split(':') if config.has_option(file_name, ini_key): config.remove_option(file_name, ini_key) config.set(file_name, ini_key, str(self.target_dict[dict_key])) with open(filename, 'w') as cfgfile: config.write(cfgfile)
通过以上修改,你的代码应该能够正确处理INI文件中同一个section下的重复key了。
球一个最佳答案谢谢啦!这对我非常重要! |