从文件中读取python列表

时间:2015-06-26 11:50:52

标签: python list

我使用

将列表l打印到文件中
f = open('a.txt', 'a')
f.write(str(l))

现在,我如何从文件中检索列表。

列表l是字典列表的列表。

5 个答案:

答案 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()