【问题标题】:Danger in corrupting file during unexpected shutdown意外关机期间损坏文件的危险
【发布时间】:2015-04-09 12:06:13
【问题描述】:

我正在通过以下方式记录数据:

with open('filename.txt','a') as fid:
    fid.write(line_of_data)

诚然,每次写入打开文件的时间都很短,但我会每秒写入一次数据,使其非常重复。由于这是在远程系统上使用的,因此电源总是有可能中断导致计算机关闭。如果在 fid.write() 中间断电,整个文件是否会损坏,或者,因为它被打开以“追加”,所以只会丢失最后一行?

【问题讨论】:

  • 在 CPython 中,文件对象是使用 C FILE 类型实现的。所以我怀疑这个问题的答案与“在 C 中,如果我在写我的 FILE 对象时断电会发生什么?”的答案是一样的。也许这个问题已经存在于 SO :-)
  • 究竟会发生什么取决于Page caching 之类的内容,以及您是否使用Journaling file system。 FWIW、Windows 上的 NTFS 和 Linux 上的 ext3 和 ext4 是日志文件系统。

标签: python python-2.7 io


【解决方案1】:

它实际上取决于文件系统和操作系统。当您“写入”文件时,它可能并不真正意味着写入实际的硬盘驱动器 - 例如,它可能被操作系统缓冲,并且从未真正“制作”到硬盘驱动器本身。 在这种情况下,您不应假设任何事情都可能发生。 如果你需要某种形式的持久性写作——你可能需要使用专门的库来增加所需的安全层

【讨论】:

  • 可能是正确的,但没有帮助。请更具体。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
相关资源
最近更新 更多