Спектр применения различных файлов огромен. Именно поэтому умение их удалять — важный навык. С помощью Python вы можете удалить любой файл на компьютере.
Допустим, вы пишете программу, которая анализирует статистику фондового индекса S/home/school/math/final_analysis.csv» os.remove(path) print(«final_analysis.csv удален.»)
Файл удален. Также мы вывели сообщение с помощью оператора print() :
final_analysis.csv удален.
В первой строке программы мы импортируем модуль os . В нем содержится метод os.remove() , который мы использовали в нашей программе. Затем мы объявляем переменную path . Эта переменная хранит себе путь к файлу, который мы хотим удалить.
Затем мы вызываем os.remove() и передаем в качестве аргумента path . После этого происходит удаление файла.
Удаление пустой директории с помощью os.rmdir()
Метод os.remove() не позволяет удалить папку. В этом вам поможет метод os.rmdir() , который используется для удаления пустых файлов и директорий.
Eraser: обзор программы для удаления файлов без возможности восстановления
Метод os.rmdir() принимает лишь один параметр — путь к папке, которую вы хотите удалить. Синтаксис этого метода выглядит так:
import os os.rmdir(file_path)
Допустим, мы решили хранить наши обработанные данные внутри папки final, которая находится внутри /home/school/math directory. После запуска программы мы эту папку удаляем, ведь создаем точно такую же новую. Для удаления папки final можно написать следующую программу:
import os path = «/home/school/math/final» os.rmdir(path) print(«/home/school/math/final удалена.»)
Наша программа удаляет директорию /home/school/math/final и печатает в консоль следующее:
/home/school/math/final удалена.
Метод os.rmdir() используется для удаления только пустых директорий. Если внутри папки будут содержаться файлы, программа вернет ошибку:
[Errno 13] Permission denied: ‘/home/school/math/final’ Directory ‘final’ can not be removed
Допустим, вы пишете программу для удаления файлов. Вам может понадобиться функция, корректно обрабатывающая ошибки в случае их возникновения. В этом случае вам поможет блок try except .
В примерах выше мы видели, что в некоторых случаях может быть возвращена ошибка (например, если методу не хватает прав для удаления объекта). Если мы используем os.remove() для удаления директории — программа вернет ошибку. И если мы используем os.rmdir() для удаления папки, содержащей файлы, тоже будет возвращена ошибка.
Когда вы пишете программу, удаляющую файлы, вам может понадобиться функция, которая обрабатывает ошибки. Здесь вам пригодится блок except :
В примере вы видите использование того же метода os.rmdir() , но с механизмом обработки ошибок. В случае возникновения ошибки этот механизм выводит заранее определенное сообщение.
import os path = «/home/school/math/final» try: os.rmdir(path) print(«/home/school/math/final удален.») except OSError as error: print(«Возникла ошибка.»)
Если мы запустим этот код и ошибок не возникнет, то папка будет удалена и в консоль выведется следующее:
Как создать вирус?
/home/school/math/final удален.
Но если попытаться удалить тем же способом папку, содержащую файлы, программа выведет в консоль следующее сообщение:
Возникла ошибка.
В нашей программе мы использовали блок except . Выполнение начинается с проверки блока try . Если возникает ошибка — выполняется код внутри блока except . То есть, этот блок выполняется при возникновении ошибки OSError.
Удаление папки с файлами с помощью shutil.rmtree()
В библиотеке shutil есть метод shutil.rmtree() . Он используется для удаления папок, содержащих файлы.
Вообще эта библиотека предлагает сразу несколько методов, позволяющих проводить манипуляции с файловой системой. Но сейчас мы поговорим о shutil.rmtree() , с помощью которого можно удалить папку вместе с содержащимися в ней файлами.
Синтаксис метода shutil.rmtree() выглядит так:
import shutil shutil.rmtree(file_path)
Обратите внимание — мы импортируем модуль shutil . Как и os.remove() , метод shutil.rmtree() является частью внешнего модуля — именно поэтому мы проводим импорт.
Чтобы лучше понять метод, рассмотрим пример. Допустим, что программа для анализа оценок должна удалить директорию final. Но в ней уже хранятся файлы. Для удаления этой директории и всех файлов в ней мы можем написать следующую программу:
import shutil path = «/home/school/math/final» shutil.rmtree(path) print(«/home/school/math/final удалена.»)
Наша программа удаляет папку final и все ее содержимое. После этого в консоль выводится следующее сообщение:
/home/school/math/final удалена.
Источник: pythonist.ru
Как удалить файлы по маске с помощью скрипта
Самая частая проблема — это некорректная работа скрипта с кириллицей в названиях файлов и папок. И ниже вы увидите краткий пример скрипта для удаления файлов определённого типа из нужной папки с кириллицей в названии.
Итак, для создания корректных скриптов для работы с кириллическими именами рекомендуется скачать редактор Akelpad с официального сайта: http://sourceforge.net/projects/akelpad/
Создайте новый документ в AkelPad. Напишите строку. Мы в качестве примера пишем скрипт, который будет удалять файлы с расширением .torrent в папке D:Загрузки :
/p — указание папки.
/m — фильтр по типу файлов.
/s — рекурсия (удаление файлов во вложенных директориях)
После набора команд в редакторе, нажмите Файл — Сохранить как…
В окне Сохранить как выполните следующие действия:
- выберите папку для сохранения скрипта (любую, не имеет значения);
- в поле Кодировка укажите 866 (OEM — русская);
- задайте имя файла и через точку укажите расширение (имя.bat. Название файла не должно повторять имя команды del, shutdown и прочее. Назовите его например deltorr.bat);
- нажмите Сохранить:
Вот таким образом. Пишите в комментариях, помогла ли статья решить вашу проблему.
Источник: compfixer.info
Скрипт Python для регулярного удаления файлов
Зачастую нам не нужны старые журналы, и вам необходимо регулярно чистить их, чтобы освободить хранилище.
Это может быть что угодно, а не только логи.
- Как найти и удалить файлы старше X дней в Linux
- Как найти и удалить файлы старше определенного периода времени в Linux
В модуле os у нас есть метод stat, который дает подробную информацию о времени последнего доступа (st_atime), модификации (st_mtime) и времени модификации метаданных (st_ctime).
Все методы возвращают время в секундах с начала epoch.
Вы можете найти более подробную информацию об epoch здесь.