Удаление файлов и каталогов не удаляя родительский каталог
Для удаления файлов использую встроенные модули os и shutil, для рекурсивного удаления каталога и всего его содержимого shutil.rmtree(). Скрипт проверяет размер директории и если он больше заданного размера, то очищает все содержимое не удаляя родительский каталог.
import os
import shutil
def get_size(path):
size = 0
for root, dirs, files in os.walk(path):
for file in files:
size += os.path.getsize(os.path.join(root, file))
return float(f'{size / 1073741824:.1f}')
def cleaning(path):
for filename in os.listdir(path):
filepath = os.path.join(path, filename)
try:
shutil.rmtree(filepath)
except NotADirectoryError:
os.remove(filepath)
if __name__ == '__main__':
# directory path /tmp
path_file = '/tmp'
if not os.path.isdir(path_file):
raise FileNotFoundError('Directory does not exist')
dir_size = get_size(path_file)
# size in GB
size = 20
if dir_size > size:
cleaning(path_file)
Комментарии: