如何保存和检索Python文件中的列表?

2024-09-28 23:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我寻找了一种将变量保存到文件中的方法(使它们在其他计算中持久化)。在

我找到了一些解决方案,比如:https://stackoverflow.com/a/899199/1846113 但当我把它列在一个清单上时:

import pickle

list = [['cccc',['asd','sdad','sdadas']],['cscc',['asd','sdad','sdadas']]]
pickle.dump(list, outfile)

它给了我这个错误

^{pr2}$

有人知道问题出在哪里吗? 或者其他解决方案?在


编辑:使用解决方案

问题是我在创建列表时出错了。 我会把它贴出来(这样你就可以笑了)并避免这个愚蠢的错误: 我用一个(难看的)函数处理列表中的一些元素来创建列表:

def process_element(doc):
    processed_value = do_something(doc.pop())
    return [doc.pop, processed_value] 

有些人已经注意到,我在返回输出时出错:

[doc.pop, processed_value]

我在列表中添加了一个不可散列的方法,给了我错误。 正确的版本是:

def process_element(doc):
    processed_value = do_something(doc.pop())
    return [doc.pop(), processed_value] 

谢谢。在


Tags: 方法列表docvaluedef错误解决方案process
2条回答

更简单的方法是使用withfor和{},如下所示:

with open('input.txt', 'r') as f, open('output.txt', 'w') as o:
    for numline, line in enumerate((line.split() for line in f), start=1):
        # process line elements by using line[0] line[1]...

    # When you're done, you can write results in an output file like this
    # (add a loop if needed):
    o.write("%s %s\n" % (results[0], results[1]))

等等!在

对于您的示例列表和大多数其他示例,我将使用JSON文件格式:

导入json

lst = [['cccc',['asd','sdad','sdadas']],['cscc',['asd','sdad','sdadas']]]
with open('list.json', w) as jsonout:
    json.dump(lst, jsonout)

# and then
with (open('list.json') as jsonin:
    lst = json.load(jsonin)

相关问题 更多 >