Удалите файл принудительно, как в "rm -f" или принудительно отсоедините путь к файлу из каталога - PullRequest
4 голосов
/ 04 марта 2012

У меня есть следующий код -

#!/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) эквивалентен "rm file" в linux.

Я хотел бы знать эквивалентную функцию для "rm -f file". Принудительно удалить файл или принудительно отсоединить путь к файлу из каталога.

Также приведенный выше код пытается очистить файлы старше, чем сегодня. У меня есть ситуация, когда файлы не удаляются, так как это "защищено от записи" из-за владения Но когда я использую "rm -f" для того же файла; оно удаляется.

Я думаю, что лучше задать вопрос, хотя это звучит глупо себе

1 Ответ

4 голосов
/ 04 марта 2012

Параметр - принудительно для rm означает, что игнорирует несуществующие файлы и никогда не запрашивает , согласно моей странице руководства.

никогда не запрашивать часть проста, ваш python удаление не запрашивает, верно?

игнорировать несуществующие файлы также легко:Вы можете проверить, существует ли файл, прямо перед его удалением.У вас небольшое состояние гонки, поскольку файл может исчезнуть между проверкой существования и удалением.Или вы можете перехватить OSError и убедиться, что он выброшен, потому что файл не существует (OSError: [Errno 2] Нет такого файла или каталога ...).Еще одна причина OSError заключается в том, что файл, который вы хотите удалить, - это не файл, а каталог.

Опция force делает магию прав доступа (по крайней мере, в моем linux), просто имейте в виду, чтоудаление файла - это операция записи в каталог.

...