像“rm -f”那样强行删除文件或强行从目录中取消链接文件路径

asl*_*plr 6 python linux file rm

我的代码如下 -

#!/usr/bin/env python
import time, glob, os, sys
from datetime import date, timedelta

try:
    dpath = sys.argv[1]+"/"
except:
    print "usage: " + sys.argv[0] +" <dir_path_to_purge_files>"
    sys.exit(1)
print dpath
day_minus_mtime = time.mktime(date.today().timetuple())
g = glob.glob(dpath+"*")
for f in g:
        try:
                if day_minus_mtime > os.path.getmtime(f):
                        os.remove(f)
                        print "Removed: "+f
        except OSError, e:
                print "Not able to Remove: "+f , e
Run Code Online (Sandbox Code Playgroud)

我相信 os.remove(file) 相当于 linux 中的“rm文件”。

我想知道“rm -f file”的等效函数。强行删除文件或强行从目录中取消链接文件路径。

上面的代码也试图清除比今天更旧的文件。我有一种情况,文件没有被删除,因为它由于所有权而被“写保护”。但是当我对同一个文件使用“rm -f”时;它正在被删除。

我认为最好问一个问题,即使这听起来很愚蠢

Jör*_*yer 5

根据我的手册页,rm--force选项意味着忽略不存在的文件并且从不提示

从不提示部分很简单,你的Python删除不及时,对不对?

忽略不存在的文件也很容易:你既可以检查,如果该文件存在,将删除它的权利之前。您有一个小的竞争条件,因为文件可能会在存在检查和删除之间消失。或者您可以捕获 OSError,并验证它是否因文件不存在而被抛出(OSError: [Errno 2] No such file or directory ...)。OSError 的另一个原因是,您要删除的文件不是文件而是目录。

force 选项具有 mo 权限魔法(至少在我的 linux 上),请记住,删除文件是对目录的写操作。