【问题标题】:Use text file to save and read array使用文本文件保存和读取数组
【发布时间】:2018-05-01 17:50:10
【问题描述】:

我有一个数组,里面有很多数组,里面有很多数组,即一个大的嵌套数组。

我想将这个巨大的数组存储在一个文本文件中,以便稍后由另一个 python 程序使用 - 一个 python 程序生成数组并将其保存到文本文件中,而另一个打开文本文件并将其保存到它的自己的本地数组。

换句话说,这个大型嵌套数组对于两个程序来说必须是相同的。

我应该怎么做呢?

【问题讨论】:

  • 您确定要使用文本文件吗?你为什么不使用一些二进制序列化方法:因为你在 python 中并且想要在 python 实例之间进行传输,你可以使用pickle...
  • 使用 Numpy 及其各自的函数来处理保存和加载数组。

标签: python arrays python-3.x multidimensional-array text-files


【解决方案1】:

我建议使用 pickle 模块而不是文本文件:

保存数组:

import pickle as pkl
arr = [...]
with open('save.pkl', 'wb') as f:
    pkl.dump(arr, f)

再次打开:

with open('save.pkl', 'rb') as f:
    arr = pkl.load(f)

如果你真的想使用文本文件,可以使用 ast 中的 literal_eval() 将文本更改为数组:

from ast import literal_eval
with open('mydata.txt') as f:
    arr = literal_eval(f.read())

然后改变数组:

with open('mydata.txt', 'w+') as f:
    f.write(str(arr))

【讨论】:

  • 谢谢。我决定用泡菜。当我实现您的代码时,写入代码似乎可以工作,但读取代码输出此错误:TypeError: a bytes-like object is required, not '_io.TextIOWrapper'
  • 很抱歉我打错了。它应该是 pickle.load 而不是加载。它已被编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多