如何解决在读取文件时取消 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 举报,一经查实,本站将立刻删除。