我有一个包含16个元素的列表,每个元素是另外500个元素。我想将其写入txt文件,因此我不再需要从模拟中创建列表。我该怎么做,然后再次访问列表?
答案 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,但你应该采取一些“额外”步骤:
通过这样做,你有这些优势:
是的,泡菜不安全!见this.