我需要从.cfg
文件中读取一些字符串,这是.cfg
格式:
rangeList1 = [50,60],[100,200],[300]
rangeError = [100],[t],[50,100]
我想安全地将其转换为列表列表,所以我使用:
list(ast.literal_eval(limitList))
结果为[[50, 60], [100, 200], [300]]
,类型为List
我知道eval()
是不安全的,因为输入字符串可能会导致安全漏洞。
ast.literal_eval()
文档说:
安全地评估表达式节点。。。。。
问题:
由于这是一个关键问题,我想确定,
literal_eval()
方法使用起来100%安全吗?如果没有,你能建议另一种方法将嵌套列表字符串转换为列表吗?
我建议您最好讨论一下使用ConfigParser进行解析。
您可以用这样的样式重写它:
文件:
{
"rangeList1": [[50,60],[100,200],[300]],
"rangeError": [[100],["t"],[50,100]]
}
脚本:
import json
with open("file", "r") as f:
settings = json.load(f)