【发布时间】:2021-07-22 05:41:47
【问题描述】:
我有一个小 Python 程序,可以从网站获取数据并将其保存到 toml 文件中。 使用 toml 以便我可以轻松访问字符串。
有一次我在运行脚本的时候断电了,当我重新打开我的电脑时,文件充满了nullnullnullnull
我想找到一种方法来阻止这种情况发生。 我考虑过使用一个被重命名的临时文件,但我不知道它是否适用于 toml。我也考虑过使用数据库,但我只使用 HTML/php 中的 Sql。 因此,如果您有任何想法,请告诉我。
更新: 我尝试使用 atomicwrites pyhon 库(查看 nrdxp 的答案)并且效果很好。
而不是使用:
f = open("file", "w")
我正在使用with atomic_write("file", overwrite=True)as f: ,它可以按我的意愿工作。我用任务管理器结束程序并拔掉我的测试计算机的插头来测试它。
结果:没有错误。
【问题讨论】:
-
我们是在讨论文件末尾的四个字母“null”还是字节 0?如果是前者,那么你的写作方式肯定有些古怪。即使是后者,操作系统也应该负责提交写入,那么你在什么操作系统上运行这一切?您有执行此操作的代码的最小示例吗?
-
整个文件被替换为“null”,我在 Windows 10 上运行它。写作:f = open("file.toml") f.write("text", "w") f.关闭()
-
如果经常断电,请保留多个文件备份。或者购买备用电源。