os.rename() 在Mac上可以对打开的文件操作,有哪些替代方案?

1 投票
2 回答
946 浏览
提问于 2025-04-16 12:13

我需要在Python中找到一种方法,来检测一个文件是否被其他应用程序打开。在Windows系统中,我找到的一个解决办法是尝试重命名这个文件。如果文件被其他应用打开,Windows是不允许你重命名它的。

可惜的是,这个方法在Mac上不管用。Mac OS X允许你在文件被其他应用打开的情况下重命名它。这似乎是系统特意设计的一个实用功能(可以查看“重命名打开的文件”)。

那么,对于Mac OS X,有什么其他的解决办法可以让我知道是否有应用程序正在使用这个文件呢?

2 个回答

0

这个问题没有通用的解决办法。如果你能控制其他使用这个文件的应用程序,可以使用一些锁定文件的方法。但如果你只是想知道是否有任何应用程序打开了某个文件,这就没有一个可以在所有平台上通用的解决方案,无论是在Python还是其他语言中都是如此。

1

试试用 os.open 加上 O_EXLOCK 这个标志。

这可能不是一个通用的解决办法,但在类Unix系统上,包括Mac,应该是有效的。

撰写回答