确定进程是否可以移动/删除文件的可移植方式



有什么可移植的方法可以确定Python进程是否可以移动/删除文件,而不必移动/删除有问题的文件?

用例:在开始处理之前,我想通知脚本的用户移动/删除操作是否成功/失败。

如果有一个只适用于Linux的解决方案,我暂时可以接受。

谢谢。

更新:我知道os.access可以使用,但仅限于真实的uid/gid。

打开文件进行追加工作吗?

try:
    open(filename,'a').close()

并捕获任何指示失败的异常?

小心使用,我真的不确定它不会因为错误而造成任何恶劣的后果。例如,至少暂时锁定了文件,我不知道这会对二进制文件产生什么影响。

如果我没记错,UNIXes上需要满足三个条件:

  1. 用户可以写入包含原始文件的目录(用于删除或移动)
  2. 如果包含原始文件的目录设置了粘性位,则原始文件应由用户所有(用于删除或移动)
  3. 此外,在移动的情况下,用户可以写入应该将其移动到的目录

在python中,条件1和3可以用os.access测试,条件2可以用os.stat测试。

更新:如果要使用有效的UID,请使用os.geteuid()并解释stat结果以检查1和3。

最新更新