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

2024-05-23 16:35:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下-

#!/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”时,它将被删除。

I think it is better to ask a question, even though it sounds stupid to yourselves


Tags: 文件torm代码importdatetimeos
1条回答
网友
1楼 · 发布于 2024-05-23 16:35:54

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

never prompt部分很简单,您的python remove不会提示,对吧?

ignorenonexistingfiles也很简单:您可以在删除之前检查文件是否存在。您有一个小竞争条件,因为文件可能在存在性检查和删除之间消失。或者您可以捕获OSError,并验证是否由于该文件不存在而引发该错误(OSError:[Errno 2]没有此类文件或目录…)。出现此错误的另一个原因是,要删除的文件不是文件而是目录。

force选项执行mo permission magic(至少在我的linux上),请记住,删除文件是对目录的写操作。

相关问题 更多 >