mirror of
https://github.com/corvax-team/ss14-wl.git
synced 2026-02-15 03:31:38 +01:00
64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
||
|
||
import os
|
||
import logging
|
||
from datetime import datetime
|
||
|
||
def find_top_level_dir(start_dir):
|
||
marker_file = 'SpaceStation14.slnx'
|
||
current_dir = start_dir
|
||
while True:
|
||
if marker_file in os.listdir(current_dir):
|
||
return current_dir
|
||
parent_dir = os.path.dirname(current_dir)
|
||
if parent_dir == current_dir:
|
||
print(f"Не удалось найти {marker_file} начиная с {start_dir}")
|
||
exit(-1)
|
||
current_dir = parent_dir
|
||
def setup_logging():
|
||
log_filename = f"cleanup_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
|
||
logging.basicConfig(filename=log_filename, level=logging.INFO,
|
||
format='%(asctime)s - %(levelname)s - %(message)s')
|
||
console = logging.StreamHandler()
|
||
console.setLevel(logging.INFO)
|
||
logging.getLogger('').addHandler(console)
|
||
return log_filename
|
||
|
||
def remove_empty_files_and_folders(path):
|
||
removed_files = 0
|
||
removed_folders = 0
|
||
|
||
for root, dirs, files in os.walk(path, topdown=False):
|
||
# Удаление пустых файлов
|
||
for file in files:
|
||
file_path = os.path.join(root, file)
|
||
if os.path.getsize(file_path) == 0:
|
||
try:
|
||
os.remove(file_path)
|
||
logging.info(f"Удален пустой файл: {file_path}")
|
||
removed_files += 1
|
||
except Exception as e:
|
||
logging.error(f"Ошибка при удалении файла {file_path}: {str(e)}")
|
||
|
||
# Удаление пустых папок
|
||
if not os.listdir(root):
|
||
try:
|
||
os.rmdir(root)
|
||
logging.info(f"Удалена пустая папка: {root}")
|
||
removed_folders += 1
|
||
except Exception as e:
|
||
logging.error(f"Ошибка при удалении папки {root}: {str(e)}")
|
||
|
||
return removed_files, removed_folders
|
||
|
||
if __name__ == "__main__":
|
||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||
main_folder = find_top_level_dir(script_dir)
|
||
root_dir = os.path.join(main_folder, "Resources\\Locale")
|
||
log_file = setup_logging()
|
||
|
||
logging.info(f"Начало очистки в директории: {root_dir}")
|
||
files_removed, folders_removed = remove_empty_files_and_folders(root_dir)
|
||
logging.info(f"Очистка завершена. Удалено файлов: {files_removed}, удалено папок: {folders_removed}")
|
||
print(f"Лог операций сохранен в файл: {log_file}")
|