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