【发布时间】:2013-01-17 21:38:58
【问题描述】:
我正在尝试在 Python 中创建一个脚本来备份一些文件。但是,这些文件可以随时重命名或删除。我不希望我的脚本通过锁定文件来阻止这种情况;该文件应该可以在备份期间随时删除。
如何在 Python 中做到这一点?而且,会发生什么?如果无法读取流,我的对象会变为 null 吗?
谢谢!我对 Python 有点陌生。
【问题讨论】:
-
行为取决于操作系统。您需要支持哪些操作系统?
-
我认为您对此无能为力。如果文件在您阅读时被删除,您可能会收到一些
IOError或OSError(在python 中没有null这样的东西。即使文件被删除,python 管理的文件对象也不是删除,并且在执行下一个系统(或 C)调用时会失败,从而引发异常)。 -
Python 上的普通
open()不会创建锁。此外,建议文件系统锁定不会阻止文件的删除或重命名,只能读取和写入(甚至这取决于应用程序正确使用flock())。 -
@FrancisAvila 这就是 Unix 上的情况,是的。在 Windows 上,打开的文件被“锁定”,因此无法删除(IIRC,
CreateFile有一个共享模式允许删除,但它有一些晦涩难懂的问题......) -
@Bakuriu:如果您在删除文件之前打开它,从 Linux 中的已删除文件中读取它可以正常工作。
标签: python backup file-locking filestreams