动态变量调用
背景
在读写json文件时,需要同时读取多个json文件并处理,如果内嵌到循环中,每次读取大大增加运行时间,写多个读写操作又太傻瓜,希望能一次创建多个变量并对应读取
具体操作
- 创建多个动态变量
# 创建动态变量函数
create_variable = locals()
for i in range(len(all_files)):
#create_variable['json_file_name_%i'%i]
root = '/home/flyingbird/Documents/reid_competition/combine_results/all_submission_files'
path = os.path.join(root, all_files[i])
with open(path, 'r') as json_file:
# 根据函数名创建并读取
create_variable['json_file_name_%i'%i] = json.load(json_file)
- 调用变量
for num in range(len(all_files)):
# 调用上面生成的json文件
local_variable = create_variable.get('json_file_name_'+str(num))
# 根据文件读取对应的信息
key_num_list.append(local_variable[key][j])
总结
使用动态变量两步走,先调用local()函数,然后在赋予不同的变量名,最后利用变量的get属性来调用变量
# 创建
create_variable = local()
# 赋值
for i in range(10):
create_variable['json_file_name_%i'%i] = i
# 调用
print(create_varibale['json_file_name_%i'%i]
json文件读写
和file文件读写类似,使用with open() as f:
#读取
with open('read_path','r') as json_max:
# 后者读取到前者
json_dict_max = json.load(json_max)
#写入
with open('save_path', 'w') as ans:
# 前者保存到后者
json.dump(json_dict_ans, ans)