丢失文本文件中Python dict生成代码,能否查询及编写脚本还原结构?
如何读取并重建文本文件中的Python字典
当然可以!这种场景其实挺常见的——当你手里只有一个可读性强的Python字典文本文件,却弄丢了生成它的代码时,完全可以通过Python脚本重建这个字典,还能自由查询里面的信息。
安全且首选的方案:使用ast.literal_eval()
千万别用eval()!虽然eval()也能解析这段文本,但它会执行任何嵌入的代码,要是文件里不小心混入了恶意代码(哪怕是误操作搞出来的),风险极高。而ast.literal_eval()是专门为解析Python字面量(比如字典、列表、元组、字符串、数字这些)设计的,它只会解析合法的结构,不会执行任何代码,安全性拉满,完美适配你说的那种由列表、字典、元组构成的合法字典场景。
具体实现脚本
下面是一个简单易用的脚本,能帮你快速重建字典并查询信息:
import ast def load_large_dict(file_path): # 读取文件内容(如果文件超大,后续可以考虑分块优化,基础场景下直接读取就够) with open(file_path, 'r', encoding='utf-8') as file: dict_text = file.read() # 把文本解析成真实的Python字典对象 parsed_dict = ast.literal_eval(dict_text) return parsed_dict # 示例使用 if __name__ == "__main__": # 替换成你的字典文件路径 my_dict = load_large_dict("your_dict_file.txt") # 像操作普通字典一样查询信息就行 print("CFGT的值:", my_dict['CFGT']) print("CISN_IF下MT_DK的值:", my_dict['CISN_IF']['MT_DK']) print("CDLAIN_ST是否为空列表:", len(my_dict['CDLAIN_ST']) == 0)
大文件的额外注意事项
如果你的文件体积特别庞大(比如数GB级),一次性读取可能会占用较多内存。这种情况下,可以考虑结合ast.parse()遍历语法树来逐步处理,但对于绝大多数场景来说,上面的基础方案已经足够高效——ast.literal_eval()处理复杂结构的速度远超预期,完全能应对大体积的合法字典文本。
用这个方法,你不仅能完整重建字典结构,还能随意查询、修改甚至导出这个字典,完全能替代原来生成代码的作用。
内容的提问来源于stack exchange,提问作者Evertthor_3
相关产品推荐
相关产品推荐

