TGViewer
| کانال توسعه‌دهندگان پایتون | | کانال توسعه‌دهندگان پایتون | @developixpython · 7.7K subscribers
Post #178 2.08K
خیلی وقت‌ها پوشه Downloads شبیه یک انباری شلوغ می‌شود؛ pdf، عکس، zip، هر چیزی قاطی هم 😅
امروز یک اسکریپت واقعی و ساده با Python می‌سازیم که فایل‌ها را بر اساس نوع، به پوشه‌های جدا منتقل کند.

ایده از این آموزش الهام گرفته شده:
Real Python - Working With Files in Python

🧠 ایده کلی

Python برای کار با فایل‌ها و مسیرها کتابخانه‌های خیلی خوبی دارد، مخصوصاً pathlib و shutil.
کاری که می‌کنیم:

- پوشه Downloads را مانیتور نمی‌کنیم، فقط هر بار اسکریپت را اجرا کنیم
- بر اساس پسوند فایل (مثلاً .pdf یا .jpg) تصمیم می‌گیریم کجا برود
- اگر پوشه مقصد وجود نداشت، خودمان می‌سازیم

این مدل اسکریپت‌ها برای مرتب‌ نگه‌داشتن سیستم شخصی یا سیستم‌های روی سرور خیلی کاربردی است.

🛠 کتابخانه‌های مورد نیاز

همه چیز با کتابخانه‌های استاندارد Python انجام می‌شود:

- pathlib برای کار راحت‌تر با مسیرها
- shutil برای جابجا کردن فایل‌ها
- os اگر خواستیم تنظیمات خاص‌تری انجام بدهیم (اینجا خیلی کم استفاده می‌شود)

📦 کد نمونه: مرتب‌سازی فایل‌ها بر اساس پسوند

این یک مثال ساده و عملی است. مسیر DOWNLOADS_PATH را با مسیر سیستم خودتان عوض کنید 👇

from pathlib import Path
import shutil

# مسیر پوشه Downloads را مطابق سیستم خود تنظیم کنید
DOWNLOADS_PATH = Path.home() / "Downloads"

# مپ کردن پسوندها به پوشه‌های هدف
EXTENSION_MAP = {
".pdf": "PDFs",
".jpg": "Images",
".jpeg": "Images",
".png": "Images",
".zip": "Archives",
".rar": "Archives",
".mp4": "Videos",
".mp3": "Music",
}

for item in DOWNLOADS_PATH.iterdir():
if item.is_file():
ext = item.suffix.lower()
if ext in EXTENSION_MAP:
target_dir = DOWNLOADS_PATH / EXTENSION_MAP[ext]
target_dir.mkdir(exist_ok=True)

target_path = target_dir / item.name
# اگر فایلی با همین نام هست، نام را کمی عوض می‌کنیم
if target_path.exists():
target_path = target_dir / f"{item.stem}_copy{ext}"

shutil.move(str(item), str(target_path))


نکات کوچک اما مهم ✨

- قبل از اجرا، یک‌بار روی یک پوشه تستی امتحان شود تا مطمئن شوید مپ پسوندها را درست تعریف کرده‌اید.
- می‌توانید EXTENSION_MAP را مطابق نیاز خود بزرگ‌تر کنید (مثلاً برای فایل‌های .pptx، .csv و غیره).
- اگر با Windows کار می‌کنید و مسیر Downloads فرق دارد، از print(Path.home()) استفاده کنید تا مسیر خانه کاربر را ببینید.

چطور حرفه‌ای‌ترش کنیم؟

- اضافه کردن logging برای لاگ کردن کارهایی که روی فایل‌ها انجام می‌شود.
- ساختن یک CLI ساده با کتابخانه argparse تا بشود مسیر را از طریق command line داد.
- زمان‌بندی اجرای اسکریپت (مثلاً با Task Scheduler روی Windows یا cron روی Linux).

اگر پوشه Downloads شما همیشه شلوغ است، این اسکریپت یک نجات‌دهنده کوچک است 😄
امتحانش کنید و اگر دوست داشتید، با بقیه توسعه‌دهندگان پایتون هم به اشتراک بگذارید.

🔖 #Python #پایتون #Python #Automation #Files #pathlib #shutil #Scripting

👤 Developix

💎 Channel: @DevelopixPython
  • 👍 5
  • ❤ 4
  • 🔥 1
More from @developixpython
  1. Sep 30, 2026💠 نسخه جدید کتابخانه FastAPI منتشر شده است 🔸 ارتقا از نسخه 0.141.1 به 0.142.2 🔖 #fastap…
  2. Sep 8, 2026آرگومان پیش‌فرض لیست؛ باگ خفن ولی بی‌سر‌و‌صدا 😅 خیلی‌ها (حتی حرفه‌ای‌ها) یه زمانی این سوت…
  3. Sep 6, 2026🔥 پروژه: مهارت‌های تحقیق آکادمیک با Claude Code اگر برای پروژه‌های پایتونی مقاله، مستندات…
  4. Aug 24, 2026خیلی وقت‌ها با باگ‌های عجیب روبه‌رو می‌شویم که فقط به خاطر یک فاصلهٔ اضافی یا خط‌جدید ته ر…
  5. Aug 12, 2026🔥 پروژه: ‏DSPy فریم‌ورک برنامه‌نویسی LLM DSPy یه فریم‌ورک پایتونی از آزمایشگاه NLP اس…
  6. Aug 9, 2026مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →