【发布时间】:2023-03-10 04:48:01
【问题描述】:
我的代码如下 -
#!/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”时;它正在被删除。
我认为问一个问题更好,即使这听起来很愚蠢 给自己
【问题讨论】:
-
对我来说,
os.remove()甚至删除所有权限位未设置且属于不同用户的文件,即os.remove()为我执行rm -f。请提供您收到的完整错误消息。 -
os.remove/os.unlink(两者都一样)做的基本一样。如果文件没有被ownership删除,那么你也不能使用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 Not able to Remove: /path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl [Errno 2] No such file or directory: '/path_to_rep_temp/replicate/tmp/daf.fefl.20120304095323.2393.20120304094623839.ddl' Not able to Remove: /path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl.noidx [Errno 2] No such file or directory: '/path_to_rep_temp/replicate/tmp/daf.fefl.20120304.2393.ddl.noidx'