递归删除指定目录下所有 .db 文件,并生成日志(UTF-8)。
支持命令行参数:python delDB.py [目标路径]
import os
import sys
import time
from pathlib import Path
# ========== 默认配置 ==========
DEFAULT_ROOT = Path(r"C:\test") # 默认扫描目录
LOG_FILE = Path(__file__).with_name("deleted_db_list.txt") # 日志自动放脚本目录
SHOW_PRINT = True # True:打印每个删除项
DRY_RUN = False # True:只预览不删除(安全模式)
# ==============================
def delete_db_files(root: Path):
"""递归删除 .db 文件并记录日志"""
count = 0
total_size = 0
start_time = time.time()
with open(LOG_FILE, "w", encoding="utf-8") as log:
log.write("Deleted .db files list\n")
log.write(f"Root: {root}\n")
log.write(f"Time: {time.strftime('%Y-%m-%d %H:%M:%S')}\n\n")
for path in root.rglob("*.db"):
try:
size = path.stat().st_size
total_size += size
count += 1
log.write(f"{path}\t{size} bytes\n")
if SHOW_PRINT:
print(f"🗑️ 删除: {path} ({size} bytes)")
if not DRY_RUN:
path.unlink()
except Exception as e:
log.write(f"❌ 无法删除: {path} -> {e}\n")
if SHOW_PRINT:
print(f"❌ 无法删除: {path} -> {e}")
elapsed = time.time() - start_time
log.write(f"\n共删除 {count} 个文件,总大小 {total_size/1024:.2f} KB,用时 {elapsed:.2f} 秒。\n")
print("\n========== 任务完成 ==========")
print(f"📜 删除日志: {LOG_FILE}")
print(f"📦 共删除: {count} 个文件, 总大小: {total_size/1024:.2f} KB")
if __name__ == "__main__":
# 支持命令行参数:python delDB.py [路径]
if len(sys.argv) > 1:
ROOT_DIR = Path(sys.argv[1])
else:
ROOT_DIR = DEFAULT_ROOT
if not ROOT_DIR.exists():
print(f"❌ 路径不存在: {ROOT_DIR}")
sys.exit(1)
delete_db_files(ROOT_DIR)
❤️ 转载文章请注明出处,谢谢!❤️