6

我的代码如下 -

#!/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

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

我想知道“rm -f 文件”的等效功能。强制删除文件或强制取消文件路径与目录的链接。

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

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

4

1 回答 1

5

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

从不提示的部分很简单,你的python remove 没有提示,对吧?

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

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

于 2012-03-04T15:50:15.760 回答