我有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等。
答案 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',''))
甚至只是直接导入文件而不复制它。