如何在Python中将数据结构持久化到文件中? [已关闭]

问题描述 投票:0回答:7

假设我有这样的东西:

d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }

以编程方式将其放入稍后可以从 python 加载的文件中的正确方法是什么?

我可以以某种方式将其保存为 python 源代码(在 python 脚本中,而不是手动!),然后

import

 稍后再保存吗?

或者我应该使用 JSON 还是什么?

python file persistence
7个回答
72
投票
使用

pickle 模块。

import pickle d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] } afile = open(r'C:\d.pkl', 'wb') pickle.dump(d, afile) afile.close() #reload object from file file2 = open(r'C:\d.pkl', 'rb') new_d = pickle.load(file2) file2.close() #print dictionary object loaded from file print new_d
    

16
投票
选择:

Python 标准库 - 数据持久性。 哪一种最合适可能会根据您的具体需求而有所不同。 就“将任意对象写入文件并恢复它”而言,

pickle

可能是最简单、最有能力的——它可以自动处理自定义类和循环引用。

为了获得最佳酸洗性能(速度和空间),请在

cPickle

 处使用 
HIGHEST_PROTOCOL


8
投票
尝试使用 shelve 模块,它会给你持久的字典,例如:

import shelve d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] } shelf = shelve.open('shelf_file') for key in d: shelf[key] = d[key] shelf.close() .... # reopen the shelf shelf = shelve.open('shelf_file') print(shelf) # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}
    

5
投票

JSON有缺点,但是当它满足你的需求时,它也是:




1
投票
如果您想将其保存为易于阅读的类似 JSON 的格式,请使用

repr

 序列化对象并使用 
eval
 反序列化它。

repr(object) -> string


  
  

返回对象的规范字符串表示形式。 对于大多数对象类型,

eval(repr(object)) == object

© www.soinside.com 2019 - 2024. All rights reserved.