如何将含嵌套字典的文本文件读取为Python嵌套字典?
读取含嵌套字典的文本文件为Python嵌套字典
你的文本文件内容本身符合Python字典的语法规范,不需要逐行拆分处理,直接读取后解析即可,以下是两种可行方案:
推荐方案:使用ast.literal_eval(安全可靠)
ast.literal_eval专门用于解析Python字面量(比如字典、列表、元组等),不会执行任意代码,安全性远高于eval。
import sys import ast param_file = sys.argv[2] # 读取文件全部内容 with open(param_file, 'r') as file: file_content = file.read() # 提取字典部分:移除开头的"experiment_setup = "前缀 dict_content = file_content.split('=', 1)[1].strip() # 解析为嵌套字典 experiment_setup = ast.literal_eval(dict_content) # 验证结果 print(experiment_setup) print(type(experiment_setup)) # 输出 <class 'dict'>
不推荐方案:使用exec(存在安全风险)
如果能确保文件内容绝对安全,也可以直接执行文件中的代码片段,但这种方式会执行任意代码,若文件被篡改可能导致安全问题:
import sys param_file = sys.argv[2] with open(param_file, 'r') as file: file_content = file.read() # 执行代码,将字典存入局部变量 local_vars = {} exec(file_content, globals(), local_vars) experiment_setup = local_vars['experiment_setup'] print(experiment_setup)
原代码的问题
你原来的代码通过逐行按:拆分键值对,仅适用于扁平的单层级键值结构,无法识别嵌套字典的层级关系,因此无法处理这类复杂结构。
内容的提问来源于stack exchange,提问作者TheLordRaj
相关产品推荐
相关产品推荐

