gpt4 book ai didi

python - 崩溃后写入文件而不会丢失数据

转载 作者:行者123 更新时间:2023-11-28 21:10:20 26 4
gpt4 key购买 nike

我有一个在循环开始之前打开的文件,几乎在循环的每次迭代中我都在写入该文件。然后我在循环结束后关闭文件。所以例如像这样的东西:

testfile = open('datagathered','w')
for i in range(n):
...
testfile.write(line)

testfile.close()
  • 我遇到的问题是,如果程序崩溃或我想​​崩溃,已经写入testfile 的内容将被删除,文本文件datagathered 将为空。我知道发生这种情况是因为我只在循环后关闭文件,但是如果我在每次写入后(即在循环中)关闭并打开文件,这不会导致难以置信的减速吗?

  • 如果是,我有什么替代方案来进行写作,并确保在发生崩溃时,已经写好的行不会以有效的方式丢失?

  • 链接的帖子确实提出了可以回答这个问题的好建议,但它们没有涵盖所涉及的风险和效率差异。更准确地说:使用缓冲区大小是否有任何风险?例如testfile = open('datagathered','w',0) 最后,如果要写入多个文件,使用 with open... 仍然是一个可行的替代方案吗?

  • 小提示:这是在非常长的运行环境下提出的,文件将被写入 2-3 天。因此,拥有一种快速、安全的写作方式在这里绝对有值(value)。

最佳答案

从问题中我了解到您在谈论异常可能发生在运行时和 SIGINT。

您可以使用“try-except-finally” block 来实现您的目标。它使您能够捕获异常和 SIGINT 信号。由于 finally block 将被执行,要么捕获到异常,要么一切顺利,关闭文件是最好的选择。我猜下面的示例代码可以解决您的问题。

testfile = open('datagathered','w')
try:
for i in range(n):
...
testfile.write(line)
except KeyboardInterrupt:
print "Interrupt from keyboard"
except:
print "Other exception"
finally:
testfile.close()

关于python - 崩溃后写入文件而不会丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com