You've already forked parser_1cmycloud
mirror of
https://github.com/vanyagoncharov/parser_1cmycloud.git
synced 2026-06-19 17:18:10 +02:00
99 lines
3.5 KiB
Python
99 lines
3.5 KiB
Python
|
|
#!/usr/bin/env python
|
||
|
|
# -*- coding: utf-8 -*-
|
||
|
|
"""
|
||
|
|
Скрипт для удаления всех HTML файлов из директории и подпапок
|
||
|
|
"""
|
||
|
|
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
import io
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
# Настройка UTF-8 для вывода в консоль (для Windows)
|
||
|
|
if sys.platform == 'win32':
|
||
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||
|
|
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
|
||
|
|
|
||
|
|
def delete_html_files(target_dir, dry_run=True):
|
||
|
|
"""
|
||
|
|
Удаляет все HTML файлы из директории и подпапок
|
||
|
|
|
||
|
|
Args:
|
||
|
|
target_dir: Целевая директория
|
||
|
|
dry_run: Если True - только показывает что будет удалено
|
||
|
|
"""
|
||
|
|
target_path = Path(target_dir)
|
||
|
|
|
||
|
|
if not target_path.exists():
|
||
|
|
print(f"❌ Директория {target_dir} не найдена!")
|
||
|
|
return
|
||
|
|
|
||
|
|
print(f"🔍 Поиск HTML файлов в {target_dir}...\n")
|
||
|
|
|
||
|
|
# Рекурсивно находим все HTML файлы
|
||
|
|
html_files = list(target_path.rglob('*.html'))
|
||
|
|
|
||
|
|
print(f"📊 Найдено HTML файлов: {len(html_files)}\n")
|
||
|
|
|
||
|
|
if not html_files:
|
||
|
|
print("✅ HTML файлов не найдено!")
|
||
|
|
return
|
||
|
|
|
||
|
|
# Показываем первые 20 файлов
|
||
|
|
print("Примеры файлов для удаления (первые 20):")
|
||
|
|
for i, file_path in enumerate(html_files[:20]):
|
||
|
|
relative_path = file_path.relative_to(target_path)
|
||
|
|
print(f" 🗑️ {relative_path}")
|
||
|
|
|
||
|
|
if len(html_files) > 20:
|
||
|
|
print(f" ... и еще {len(html_files) - 20} файлов")
|
||
|
|
|
||
|
|
print()
|
||
|
|
|
||
|
|
if dry_run:
|
||
|
|
print("⚠️ Режим DRY RUN - файлы не будут удалены")
|
||
|
|
print(" Запустите с --apply для применения изменений")
|
||
|
|
return
|
||
|
|
|
||
|
|
# Удаляем файлы
|
||
|
|
print("🚀 Удаляю файлы...\n")
|
||
|
|
deleted = 0
|
||
|
|
errors = 0
|
||
|
|
|
||
|
|
for file_path in html_files:
|
||
|
|
try:
|
||
|
|
if file_path.exists():
|
||
|
|
file_path.unlink()
|
||
|
|
deleted += 1
|
||
|
|
|
||
|
|
if deleted <= 20 or deleted % 100 == 0:
|
||
|
|
relative_path = file_path.relative_to(target_path)
|
||
|
|
print(f" ✓ Удалено: {relative_path}")
|
||
|
|
except Exception as e:
|
||
|
|
errors += 1
|
||
|
|
print(f" ❌ Ошибка при удалении {file_path.name}: {e}")
|
||
|
|
|
||
|
|
print(f"\n{'='*60}")
|
||
|
|
print(f"✅ Удаление завершено!")
|
||
|
|
print(f" Удалено: {deleted}")
|
||
|
|
print(f" Ошибок: {errors}")
|
||
|
|
print(f"{'='*60}")
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
import argparse
|
||
|
|
|
||
|
|
parser = argparse.ArgumentParser(description='Удаление всех HTML файлов из директории')
|
||
|
|
parser.add_argument('target_dir', type=str, nargs='?',
|
||
|
|
default=r'E:\Programs\1C\УчетКинолога\Документация\ManualDevelop',
|
||
|
|
help='Целевая директория')
|
||
|
|
parser.add_argument('--apply', action='store_true',
|
||
|
|
help='Применить изменения (по умолчанию: только показать план)')
|
||
|
|
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
print("🗑️ Удаление HTML файлов\n")
|
||
|
|
delete_html_files(args.target_dir, dry_run=not args.apply)
|
||
|
|
|
||
|
|
|
||
|
|
|