我正在尝试使用python修改/更新yaml配置文件。 a要修改的部分是一个字典,这里有一个yaml文件结构的示例:
DEFAULT:
zoneID_dictionary_2: # Usual activity place.
-1: 'Unknown zone'
1: 'Zone XX 01'
2: 'Zone XX 02'
999: 'Unknown zone'
我使用pandas加载了一个CSV文件,从中提取所需的新词典。这是我的代码摘录:
def yml_manager(config_template_file_path, output_file_path, customers_catchment_area_dict_file_path=None):
# Load the template of the configuration file
stream = open(config_template_file_path, 'r')
config = yaml.load(stream=stream)
# Update directories
config['DEFAULT']['dir_path_1'] = '_new_path_1_'
config['DEFAULT']['dir_path_2'] = '_new_path_2_'
if customers_catchment_area_dict_file_path is not None:
df = pandas.read_csv(customers_catchment_area_dict_file_path, sep=';')
config['DEFAULT']['zoneID_dict'] = {x: y for x, y in zip(df['zone_ID'].tolist(), df['zone_name'].tolist())}
with open(output_file_path, 'w') as yml_file:
yml_file.write(yaml.dump(data=config, default_flow_style=False))
yml_file.close()
通过使用此代码,我有以下异常:类型错误:转储文件时无法理解数据类型。另一方面,当我在代码中创建字典时,如下所示:
d = {-1: 'Unknown zone',
1: 'catchment_zone_01',
2: 'catchment_zone_02'}
config['DEFAULT']['zoneID_dict'] = d
不再引发异常。你知道吗
由于这个项目的上下文,我必须使用YAML文件,并从一个CSV文件中加载字典信息,该文件有数百行(我将使用pandas清理),所以有没有关于我做错了什么的想法?你知道吗
提前谢谢各位!你知道吗
我发现了问题,好像当我尝试转储新文件时,亚马尔垃圾场无法识别指定给整数的数据类型。因此,我们可以通过在创建字典时添加强制转换来解决此问题:
相关问题 更多 >
编程相关推荐