如何将列表列表写入txt文件?

时间:2013-10-18 23:18:17

标签: python

我有一个包含16个元素的列表,每个元素是另外500个元素。我想将其写入txt文件,因此我不再需要从模拟中创建列表。我该怎么做,然后再次访问列表?

5 个答案:

答案 0 :(得分:9)

Pickle会起作用,但缺点是它是一种特定于Python的二进制格式。另存为JSON,便于在其他应用程序中阅读和重复使用:

import json

LoL = [ range(5), list("ABCDE"), range(5) ]

with open('Jfile.txt','w') as myfile:
    json.dump(LoL,myfile)

该文件现在包含:

[[0, 1, 2, 3, 4], ["A", "B", "C", "D", "E"], [0, 1, 2, 3, 4]]

稍后再回来:

with open('Jfile.txt','r') as infile:
    newList = json.load(infile)

print newList

答案 1 :(得分:6)

存储它:

import cPickle

savefilePath = 'path/to/file'
with open(savefilePath, 'w') as savefile:
  cPickle.dump(myBigList, savefile)

要取回它:

import cPickle

savefilePath = 'path/to/file'
with open(savefilePath) as savefile:
  myBigList = cPickle.load(savefile)

答案 2 :(得分:0)

看看pickle对象序列化。使用pickle,您可以序列化列表,然后将其保存到文本文件中。稍后您可以从文本文件中“取消”数据。数据将被取消标记到列表中,您可以在python中再次使用它。 @ inspectorG4dget打败了我的答案,所以看一看。

答案 3 :(得分:0)

虽然pickle肯定是一个不错的选择,但对于这个特定的问题,我宁愿将其保存到csv中,也可以只使用numpy将16个列保存为普通的txt文件。

import numpy as np

# here I use list of 3 lists as an example
nlist = 3

# generating fake data `listoflists`
listoflists = []
for i in xrange(3) :
    listoflists.append([i]*500)

# save it into a numpy array
outarr = np.vstack(listoflists)
# save it into a file
np.savetxt("test.dat", outarr.T)

答案 4 :(得分:0)

在这种情况下我建议使用cPickle,但你应该采取一些“额外”步骤:

  • ZLIB输出。
  • 对其进行编码或加密。

通过这样做,你有这些优势:

  • ZLIB将缩小其尺寸。
  • 加密可能会导致腌制劫持。

是的,泡菜不安全!见this.