目前我有这段代码,它从包含类似[{'1': {'Score': '2', 'Class': '3'}}]
的文件中读取并将其分配给变量:
exec('assigns = ' + open(r'D:\Dropbox\Dev\Output\dict', 'r').read())
但是,我被告知使用exec
是危险的。如何在不使用exec
的情况下编写相同的代码?
答案 0 :(得分:7)
assigns = ast.literal_eval(open(r'D:\Dropbox\Dev\Output\dict', 'r').read())
它只会评估文字,没有函数调用或运算符。
答案 1 :(得分:1)
>>> data = """[{'1': {'Score': '2', 'Class': '3'}}]""" # example; get this from file
>>> import ast
>>> x = ast.literal_eval(data)
>>> x[0]
{'1': {'Score': '2', 'Class': '3'}}
>>> x[0]['1']
{'Score': '2', 'Class': '3'}
>>> x[0]['1']['Class']
'3'
>>>