4

我有一个包含 16 个元素的列表,每个元素又长 500 个元素。我想将其写入 txt 文件,因此我不再需要从模拟中创建列表。我怎样才能做到这一点,然后再次访问该列表?

4

5 回答 5

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
于 2013-10-19T00:28:34.350 回答
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)
于 2013-10-18T23:21:31.297 回答
0

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

于 2013-10-18T23:22:53.477 回答
0

在这种情况下,我确实推荐 cPickle,但您应该采取一些“额外”步骤:

  • ZLIB 输出。
  • 编码或加密它。

通过这样做,您将拥有以下优势:

  • ZLIB 将减小其大小。
  • 加密可能会阻止酸洗劫持。

是的,泡菜不安全!看到这个。

于 2013-10-19T00:27:10.300 回答
0

虽然pickle肯定是一个不错的选择,但对于这个特定的问题,我更喜欢简单地将其保存到 csv 或使用numpy.

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)
于 2013-10-18T23:50:13.153 回答