微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在读取文件时取消 Python 进程会损坏文件

如何解决在读取文件时取消 Python 进程会损坏文件

我有一个简单的过程来读取和写入文件。有时,如果我在读取过程中终止 Python 进程(控制台中的“Ctrl c”),文件会损坏并且无法再读取。我怎样才能防止这种情况?我已经有“rb”作为打开模式。也许我可以确保 python 在文件打开例程中不会取消?

代码如下:

    import dill
    results = []
    with open(self.getFile(),'rb') as input:
        if n is not None:
            for i in range(n):
                try:
                    results.append(dill.load(input))
                except (EOFError,pickle.UnpicklingError) as e:
                    print('ERROR with reading {}'.format(self.getFile()))
                    pass

为了完整起见,还有写作过程——希望无关紧要。

def write(self,objects):
    with open(self.getFile(),'wb') as output:
        for object in objects:
            dill.dump(object,output,pickle.HIGHEST_PROTOCOL)

问题再次发生,现在我可以看到完整的错误

    results.append(dill.load(input))
  File "/home/x/anaconda3/envs/myenv3/lib/python3.6/site-packages/dill/_dill.py",line 270,in load
    return Unpickler(file,ignore=ignore,**kwds).load()
  File "/home/x/anaconda3/envs/myenv3/lib/python3.6/site-packages/dill/_dill.py",line 472,in load
    obj = StockUnpickler.load(self)
EOFError: Ran out of input

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。