我使用
将列表l
打印到文件中
f = open('a.txt', 'a')
f.write(str(l))
现在,我如何从文件中检索列表。
列表l
是字典列表的列表。
答案 0 :(得分:3)
另一种方法是序列化为Json并写入文件。
import json
ll = [ { 'akey1':'val1', 'akey2':'val2'}, {'bkey1':'bkey1', 'bkey2':'bkey2'}]
# write to file
with open('backup.json', 'w') as fout:
fout.write(json.dumps(ll))
# read from file
with open('backup.json', 'r') as fin:
ll_in = json.load(fin)
print ll_in
答案 1 :(得分:2)
这不是将数据序列化到文件的最佳方式,但要从字符串转换回列表,您可以使用ast.literal_eval
。
e.g。
import ast
l = [['dir/path', 'other/path'],['path/path', 'blah/xyz']]
with open('a.txt', 'a') as f:
f.write(str(l))
with open('a.txt') as fread:
s = fread.read()
l2 = ast.literal_eval(s)
print type(l2)
for i in l2:
print i
有很多更好的方法,pickle或json杰出的选择。
请注意,每次向文件追加完整列表时,重复运行代码以写入文件将导致包含无效python语法的文件无法eval
返回列表。
答案 2 :(得分:2)
我认为使用泡菜的最佳方式
你可以这样使用它:
def createPickleFile(self):
listToStore = self.traceManager.getData()
fileObject = open("mypath", 'wb')
pickle.dump(listToStore, fileObject)
fileObject.close()
def getPickle(self):
tesst = OrderedDict()
fileObject = open(CONST_DEBUG_FILE_PATH, 'rb')
pickleDict = pickle.load(fileObject)
for item in pickleDict:
print(item,pickleDict[item])
self.traceManager.addValue(item,pickleDict[item])
fileObject.close()
return pickleDict
答案 3 :(得分:1)
使用ast:
import ast
f = open('a.txt').read()
l = ast.literal_eval(s)
l
将是一个列表对象。
答案 4 :(得分:0)
这是一种方法:
f = open('yourfile.txt').read()