Python 强制删除文件,如中所述;rm-f";或者强制取消文件路径与目录的链接

Python 强制删除文件,如中所述;rm-f";或者强制取消文件路径与目录的链接,python,linux,file,rm,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

我的密码如下-

#!/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
#/usr/bin/env python
导入时间、全局、操作系统、系统
从日期时间导入日期,时间增量
尝试:
dpath=sys.argv[1]+“/”
除:
打印“用法:+sys.argv[0]+”
系统出口(1)
打印数据路径
day\u减去\u mtime=time.mktime(date.today().timetuple())
g=glob.glob(dpath+“*”)
对于f in g:
尝试:
如果day\u减去\u mtime>os.path.getmtime(f):
删除操作系统(f)
打印“已删除:”+f
除O错误外,e:
打印“无法删除:”+f,e
我相信os.remove(file)相当于linux中的“rm file”

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

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

我认为最好问一个问题,尽管听起来很愚蠢 你们自己

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

从不提示部分很简单,python删除不会提示,对吗

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


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

对于我来说,
os.remove()
甚至删除所有权限位未设置且属于不同用户的文件,即
os.remove()
对我来说是
rm-f
。请提供您收到的完整错误消息。
os.remove
/
os.unlink
(两者相同)执行基本相同的操作。如果文件未按所有权删除,则也不能使用
rm-f
将其删除。如果只是权限问题。。。那么唯一重要的是目录的权限,而不是@SvenMarnach提到的文件本身。我想你是对的,这与在我运行此程序的服务器中作为NFS装载的NAS存储有关。@RicardoCárdenes:文件的所有权在Linux上也不重要——只要您对目录有写权限,您就可以删除任何人的文件。
user@server:/path_to_scripts/scripts$/path_to_scripts/scripts/purgedir.py/path_to_rep_temp/replicate/tmp/path_to_rep_temp/replicate/tmp无法删除:/path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl[Errno 2]没有这样的文件或目录:'/path_to_rep_temp/replicate/tmp/daf.fefl.20120304095323.2393.20120304094623839.ddl'无法删除:/path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl.noidx[错误号2]没有这样的文件或目录:'/path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl.noidx'
Thank you@JörgBeyer这回答了我的问题。为了挑剔,删除目录中设置了粘性位的文件(例如
/tmp/
),还需要文件本身的所有权(除了对目录的写入权限)@JörgBeyer:我想,我没有投票的声望。如果你愿意,你可以接受答案——没有任何声望。这与投票不同,看看是否因为文件不存在而出现异常,最好检查
ex.errno==errno.enoint
,而不是依赖字符串匹配。