Задать вопрос
@Reshh4rd

Почему не отрабатывает удаление файлов через скрипт?

Приветствую!

Написал скрипт, который генерит некоторые файлы. Файлов скапливается много и надо чистить
Добавил в скрипт :

delete = subprocess.call (['/usr/bin/find', '/home/files/pars', '-type', 'd', '-mtime', '+7', '-print0', '|', 'xargs', '-0', 'rm', '-rf'])

Запуск скрипта с данной командой выдает следующие :
/usr/bin/find: paths must precede expression
Usage: /usr/bin/find [-H] [-L] [-P] [path...] [expression]

Убираю всю структуру для subprocess и запускаю из командной строки ту же самую команду:

/usr/bin/find /home/files/pars -type d -mtime +7 -print0 | xargs -0 rm -rf

Всё успешно.

Что не так в скрипте, какую часть он не воспринимает? Нагуглить не получилось..
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nirail
@Nirail
Дайте мне повод и я во все решу
Использовать "|" в subprocess можно только в случае, если параметр shell=True, но это не безопасно, и может приводить к разным неочевидным проблемам.

Если нужно поведение как в системе, то можно воспользоваться os.system(cmd).

Наиболее правильным решением будет сделать аналогичное поведение, но на основе Python.
Если поведение find не хочется воспроизводить, но можно find запустить в subprocess, получить его вывод (список файлов), которые потом в цикле из Python и удалять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы