在转储后从文件读取对象,然后再读取到fi

2024-10-02 12:35:56 发布

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

我做了一个函数来将对象写入文件:

def StoreToFile(Thefile,objekt):
    utfil=None
    utfil=open(Thefile,'wb')
    pickle.dump(objekt,utfil)
    return True
    if utfil is not None:
    utfil.close()

以及使用此函数的代码:

^{pr2}$

这就像一个符咒,但是我怎样才能把对象放回一个列表对象呢?在

我有提取对象的代码,但是我不知道如何遍历这些对象以将它们放入一个新的列表中。 到目前为止,我有这个:

def ReadFromFile(filename):
    infile=None
    infile=open(filename,'rb')
    objekt=pickle.load(infile)

Tags: 文件对象函数代码none列表defopen
3条回答

您的代码很傻,utfil = None业务没有意义,因为open(...)可能失败的唯一方法是出现异常,在这种情况下,函数的其余部分无论如何都不会执行。正确的方法是使用上下文管理器:即with语句。在

相反,请执行以下操作:

def storeToFile(path, o):
    try:
        with open(path, "wb") as f:
            pickle.dump(o, f)
            return True
    except pickle.PicklingError, IOError:
        return False
for st in Stadion:
    StoreToFile(r'C:\pytest\prod.psr',st)

This works like a charm.

如果你的意思是“运行而不出错”,那么是的,它确实“工作”。此代码重复重写文件,因此它只包含列表中的最后一项。在

改用这个:

^{pr2}$

您的ReadFromFile()函数应该可以正常工作,并返回一个列表(假设上面的修复)。在

也不知道这是做什么的:

return True
if Thefile.close()

你应该把整张单子都腌一下。在

相关问题 更多 >

    热门问题