【问题标题】:Safe to open file in text editor while writing to it in Python?在 Python 中写入文件时在文本编辑器中打开文件是否安全?
【发布时间】:2018-07-20 20:10:20
【问题描述】:

我使用 Python 将一个长测量值写入文本文件。在我的脚本运行时在记事本中打开文件是否安全?

【问题讨论】:

  • 我不这么认为
  • 这取决于程序是否锁定文件——如果你在 Windows 上,记事本可能没问题。另一种选择是复制文件,然后打开副本。
  • 这可能取决于您的操作系统、您的编辑器和您的操作。如果您的操作系统没有对锁定文件做一些有趣的事情,并且您和您的编辑器没有执行任何写入、截断等操作,那么您应该没问题。
  • 我会避免这样做,除非您确定您的文件是由文本编辑器以只读模式打开的(例如:vim -RM,在 linux 上)。
  • 如果问题中没有包含操作系统和特定的编辑器,这是不可知的。这通常安全的,但我们不能代表每个操作系统上的每个编辑器。

标签: python file io


【解决方案1】:

最佳实践似乎是:复制文件并打开副本。

谢谢@pault。

【讨论】:

  • 为什么您认为这是最佳做法?
  • 不用担心编辑器是否截断或如何在只读模式下使用。
  • 为什么编辑器永远会截断正在打开的文件,但没有明确告知要保存它?我从来没有听说过编辑会这样做——虽然被允许,但我已经足够老派了,可以坚持使用vimemacs(两者都表现得很好)。
  • 当然,但事情是这样的——如果你问“假设没有编辑器会做 X 是否安全?”如果没有指定特定的编辑器,那么我们必须假设 Joe Bob 的 Weirdo Half-Assed Editor 存在,并且会在启动时自动尝试将您的文件更改为不同的字符集或其他内容,因此您(在您的 cmets 中)得到一个非常保守的答案。然而,在几乎所有情况下,这个答案都是不必要保守的。
  • (如果问题中没有指定详细信息,我们还需要担心 Windows 上的编辑器,并且默认情况下,Windows 的文件锁定规则比 Unix 世界有更多的限制性;打开一个即使在只读模式下,文件也可以限制 Windows 上的并发写入,而对 Unixlike 没有影响)。
猜你喜欢
  • 2016-04-11
  • 2016-09-10
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 2020-10-20
  • 1970-01-01
相关资源
最近更新 更多