پروژه: دستهبندی فایلها بر اساس پسوند
اهداف پروژه
- تمرین استفاده از ماژولهای pathlib و shutil
- کار با دایرکتوریها و مسیرها
- تمرین حلقهها و ساختارهای داده (دیکشنری)
- مدیریت فایلها و دستهبندی آنها بر اساس پسوند
- ساخت برنامه کاربردی برای سازماندهی فایلها
۱. وارد کردن ماژولها و تعریف متغیرهای سراسری
from pathlib import Path
import shutil
base_dir = Path(r"D:\backup\desktop")
target_dir = base_dir / "sorted"
تعریف مسیر پایه و مسیر هدف برای ذخیره فایلهای دستهبندی شده و وارد کردن کتابخانههای مورد نیاز
۲. تعریف دستهها و پسوندهای مرتبط
FILE_CATEGORIES = {
"images": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg", ".webp"],
"documents": [".pdf", ".doc", ".docx", ".txt", ".xls", ".xlsx", ".ppt", ".pptx"],
"videos": [".mp4", ".mkv", ".avi", ".mov", ".wmv"],
"audio": [".mp3", ".wav", ".aac", ".flac", ".ogg"],
"archives": [".zip", ".rar", ".tar", ".gz", ".7z"]
}
ساخت دیکشنری برای نگهداری دستهها و پسوندهای مرتبط با هر دسته
۳. ایجاد دایرکتوریها برای هر دسته
def create_category_directories():
for category,_ in FILE_CATEGORIES.items():
(target_dir / category).mkdir(parents=True,exist_ok=True)
تابع برای ایجاد پوشههای هر دسته در مسیر هدف، با کنترل اینکه اگر پوشه وجود داشت دوباره ایجاد نشود
۴. جستجو و دستهبندی فایلها
def search_and_categorize_files():
for file in base_dir.rglob("*"):
for category,extensions in FILE_CATEGORIES.items():
if file.suffix in extensions:
try:
shutil.copy(file,target_dir / category)
except shutil.SameFileError:
pass
این تابع تمام فایلها را در مسیر پایه جستجو کرده و بر اساس پسوند آنها در پوشه مربوطه کپی میکند
۵. اجرای برنامه
create_category_directories()
search_and_categorize_files()
ایجاد پوشهها و سپس دستهبندی فایلها با فراخوانی توابع تعریفشده