خیلی وقتها پوشه
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