Python中数据的简单保存/加载

15 投票
7 回答
75360 浏览
提问于 2025-04-16 08:34

在Python中,保存和加载数据最简单的方法是什么?最好是能以人类可读的格式输出。

我保存和加载的数据包含两个浮点数的向量。理想情况下,这些向量在文件中应该有名字(比如X和Y)。

我现在的save()load()函数使用file.readline()file.write()以及字符串转浮点数的转换。肯定有更好的方法。

7 个回答

8
  • 如果你希望它能被人看懂,我推荐用JSON。除非你需要和一些大公司的人交换数据,他们更喜欢用XML。:-)

  • 如果你希望它能被人编辑,而且内容不太复杂,我可能会选择一种类似INI的格式,比如configparser。

  • 如果数据比较复杂,而且不需要交换,我会直接把数据进行序列化,除非它非常复杂,那我会使用ZODB。

  • 如果数据量很大,并且需要交换,我会使用SQL。

我觉得这些基本上涵盖了所有情况。

27

最简单的获取人类可读输出的方法是使用像JSON这样的序列化格式。Python有一个json库,你可以用它把数据转换成字符串,也可以把字符串转换回数据。就像pickle一样,你可以把这个库和输入输出对象结合使用,把数据写入文件。

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库功能非常强大,所以我建议你查看一下文档,看看它能做些什么。

9

有几种选择——我不太清楚你喜欢哪种。如果这两个向量长度相同,你可以使用 numpy.savetxt() 来把你的向量,比如 xy,保存为列的形式:

# 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。

撰写回答