编辑:我写问题的方式并没有得到我正在寻找的答案。这是我认为更清楚的问题的较短版本。
我想采用以下代码并将其压缩为一个 for 循环。
with open("vzt_notes", "r") as working_vzt_notes:
vzt_notes = json.load(working_vzt_notes)
with open("rms_notes", "r") as working_rms_notes:
rms_notes = json.load(working_rms_notes)
with open("nsr_notes", "r") as working_nsr_notes:
nsr_notes = json.load(working_nsr_notes)
with open("py_notes", "r") as working_py_notes:
py_notes = json.load(working_py_notes)
with open("vzt_keys", "r") as vzt_kw:
vzt_keys = json.load(vzt_kw)
with open("rms_keys", "r") as rms_kw:
rms_keys = json.load(rms_kw)
with open("nsr_keys", "r") as nsr_kw:
nsr_keys = json.load(nsr_kw)
with open("py_keys", "r") as py_kw:
py_keys = json.load(py_kw)
目前我一次打开所有文件。因为我要动态地创建更多的文件,所以我想要一个 for 循环来打开我在上面所做的庄园中的所有文件。我已经尝试了一些 for 循环,但是我所能做的只是将打开的文件中的所有词典存储到一个大词典中。我不想这样做。我需要让 for 循环的结果执行与一次打开每个文件并将变量命名为与文件名相同并将文件内容存储在该变量中的相同任务。
请您参考如下方法:
看起来您正在尝试以编程方式将新变量添加到全局范围。为什么不将您的笔记存储在字典中呢?这是实现您想要的目标的方法。
import json
def json_loader(filename):
with open(filename) as f:
return json.load(f)
def load_files(filenames):
return (json_loader(filename) for filename in filenames)
filenames = [
'vzt_notes', 'rms_notes', 'nsr_notes',
'py_notes', 'vzt_keys', 'rms_keys',
'nsr_keys', 'py_keys',
]
vzt_notes, rms_notes, nsr_notes, \
py_notes, vzt_keys, rms_keys, \
nsr_keys, py_keys = load_files(filenames)
print(list(load_files(filenames)))
使用上述方法,维护您的代码可能会更好(更安全):
vzt_notes = json_loader('vzt_notes')
rms_notes = json_loader('rms_notes')
...
