os.rename()适用于Mac中的打开文件。替代方案是什么?

时间:2011-02-21 14:37:54

标签: python macos

我需要一个Python机制,我可以使用它来检测某个文件是否由其他应用程序打开。对于Windows,一个对我有用的解决方案是尝试重命名该文件。如果某个文件仍由某个其他应用程序打开,则Windows不允许您重命名该文件。

不幸的是,这在Mac上无效。 Mac OS X允许您在文件被其他应用程序打开时重命名该文件。它似乎是故意内置到系统中的有用功能(参见“Rename open files”)。

对于Mac OS X,什么可以替代解决方案,以便我可以弄清楚是否有任何应用程序正在保存文件?

2 个答案:

答案 0 :(得分:1)

使用os.open标记尝试O_EXLOCK

这可能不是一般解决方案,但它应该适用于类似Unix的系统,包括Mac。

答案 1 :(得分:0)

这个问题没有一般解决方案。如果您可以使用该文件控制其他应用程序,则可以使用某种锁定文件。但是,如果您只是想知道任何应用程序是否具有某个文件的打开文件句柄,则不存在独立于平台的解决方案 - 无论是使用Python还是使用任何其他语言。