用于python词典和字符串的文件配置

时间:2015-04-08 06:53:35

标签: python dictionary configuration

我有python脚本的配置,包括整数,字符串和字典。示例config.txt文件如下所示

mode = 'train,test,validation'

pick_one_in_n_files = 2

#dictionary for labels
labels = dict(
    bowl=0,
    coffee_mug=1,
    food_bad=2,
    food_box=3,
    food_can=4,
    instant_noodles=5,
    plate=6,
    soda_can=7,
    sponge=8,
    water_bottle=9
    )

我正在阅读这个文本文件并编写一个新的临时python文件,文件与config中的文本相同。然后将新的python文件导入我的脚本并使用它的数据。

configuration_import = open(config_path.replace('txt','py'),mode =       'w+')
configuration_text = open(config_path,mode ='r')
configuration_import.write(configuration_text.read())
configuration_import.close()
configuration_text.close()
return importlib.import_module(config_path.replace('.txt',''))

这符合目的,但我正在寻找一种解决这个问题的优雅方法。

这样用户只会提供配置文本文件。他不会被允许编辑python文件。缺点是文件必须是python格式而不是某些标准的yaml,json等。

1 个答案:

答案 0 :(得分:0)

我想只需使用with就可以清理一下:

with open(config_path, mode = 'r') as file_in:
    with open(config_path.replace('.txt', '.py'), mode = 'w') as file_out:
        for line in file_in:
            file_out.write(line)
return importlib.import_module(config_path.replace('.txt',''))

甚至只是直接导入文件而不复制它。