Python中保存元组的最佳方式是什么?

16

我有一个返回包含数字、字符串和数组的元组的函数。例如,(1, 2, 3, [[1,2,3],[4,5,6]], ['a','b','c'])。我需要运行这个函数100次并保存所有的结果。我考虑将每个结果保存为一个文本文件。这样我就可以有100个*.txt文件,如下所示:

my number1: 1
my number2: 2
my number3: 3
My array:   [[1,2,3],[4,5,6]]
My Names:   ['a','b','c']

如何编写Python代码?

有没有更好的方法来保存结果,以便将来方便地重新查看数据?


4
请查看Python的“pickle”包。 - Tom Dalton
2
如果所有内容都是可序列化的,可以尝试使用 json 模块。 - wim
1
谢谢大家,但我想将它保存为*.txt文件。这样我就可以通过单击文件来检查它,并使用其他语言阅读它。使用picle或json,我们仍然需要编写代码来读取它,不是吗?----我可能太喜欢Matlab了。难道我们没有类似Matlab单元格的东西可以存储所有结果吗? - Rosy
2个回答

26

是的,你可以import pickle,并使用pickle.dump()pickle.load()来读写文件。

下面是如何将其写入文件:

data = (1, 2, 3, [[1,2,3],[4,5,6]], ['a','b','c'])
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)

要将其读回:

with open('data.pickle', 'rb') as f:
     data = pickle.load(f)

2
他写道"有没有更好的方法",所以我认为他很乐意听取建议。 - rbp
1
“易于将来重新访问数据”:这只能通过pickle读取。 - Peter Wood
2
open('data.pickle', 'r') 应该改为 open('data.pickle', 'rb')。因为如果你将数据写入二进制文件,就应该从二进制文件中读取它。否则你会遇到编码错误。 - Pol Alvarez Vecino
好的,已修复! - rbp

5

如果您想要在不同语言之间轻松访问数据,可以使用JSON。

import json
data = (1, 2, 3, [[1,2,3],[4,5,6]], ['a','b','c'])
#save your data to a json file
with open('data01.json', 'w') as fjson:
    json.dump(data, fjson)

#json file can easily be read using other languages as well
with open('data01.json', 'r') as fjson:
    revis_data = json.load(fjson)

注意:`revis_data`将被转换为列表,不再是元组。如果你想在重新加载后仍然保持它是一个元组,只需使用 `tuple(revis_data)`。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接