在python中保存和加载数据的最简单方法是什么,最好是以人类可读的输出格式?
我正在保存/加载的数据包含两个浮点数向量.理想情况下,这些矢量将在文件中命名(例如X和Y).
我的当前save()和load()函数使用file.readline(),file.write()以及字符串到浮点转换.必须有更好的东西.
Jam*_*low 24
获得人类可读输出的最简单方法是使用序列化格式,如JSON.Python包含一个json库,可用于将数据串行化为字符串.与pickle一样,您可以将其与IO对象一起使用以将其写入文件.
import json
file = open('/usr/data/application/json-dump.json', 'w+')
data = { "x": 12153535.232321, "y": 35234531.232322 }
json.dump(data, file)
如果要获取简单的字符串而不是将其转储到文件中,可以使用json.dumps()代替:
import json
print json.dumps({ "x": 12153535.232321, "y": 35234531.232322 })
从文件中读回也很简单:
import json
file = open('/usr/data/application/json-dump.json', 'r')
print json.load(file)
json库是功能齐全的,所以我建议查看文档,看看你可以用它做什么样的事情.
有几个选项 - 我不知道你喜欢什么.如果两个向量具有相同的长度,您可以使用numpy.savetxt() 保存向量,比如x和y,作为列:
 # saving:
 f = open("data", "w")
 f.write("# x y\n")        # column names
 numpy.savetxt(f, numpy.array([x, y]).T)
 # loading:
 x, y = numpy.loadtxt("data", unpack=True)
如果你正在处理更大的浮动向量,你应该使用NumPy.
如果它应该是人类可读的,我也会使用JSON.除非您需要与企业类型的人交换,否则他们更喜欢XML.:-)
如果它应该是人类可编辑的并且不是太复杂,我可能会采用某种类似INI的格式,例如configparser.
如果它很复杂,而且不需要交换,我只需要腌制数据,除非它非常复杂,在这种情况下我会使用ZODB.
如果它是大量数据,需要交换,我会使用SQL.
我认为这几乎涵盖了它.