ساخت یک اسکریپت برای سازماندهی فایل‌ها بر اساس پسوند در پایتون
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 16 دقیقه

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

پوشه‌های شلوغ و فایل‌های پراکنده یکی از مشکلات رایج هنگام کار با کامپیوتر هستند. مرتب‌سازی دستی فایل‌ها، مخصوصا زمانی که تعداد آن‌ها زیاد باشد، کاری زمان‌بر و خسته‌کننده است.

با استفاده از پایتون می‌توان یک اسکریپت ساده ساخت که فایل‌ها را بر اساس پسوندشان شناسایی کرده و به‌صورت خودکار در پوشه‌های مناسب قرار دهد. در این مطلب، نحوه ساخت چنین ابزاری را مرحله‌به‌مرحله بررسی می‌کنیم و با قابلیت‌های پایتون برای مدیریت فایل‌ها آشنا می‌شویم.

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

مدیریت فایل‌ها یکی از کارهای رایجی است که در بسیاری از پروژه‌های برنامه‌نویسی، از ابزارهای شخصی گرفته تا سیستم‌های بزرگ‌تر، به آن نیاز پیدا می‌کنیم. پایتون به دلیل سادگی و داشتن کتابخانه‌های قدرتمند، یکی از بهترین گزینه‌ها برای انجام این نوع کارها است.

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

  • سادگی در نوشتن کد: پایتون دستورات خوانا و ساده‌ای دارد و انجام کارهایی مانند خواندن فایل‌ها، بررسی پوشه‌ها یا انتقال داده‌ها را با چند خط کد امکان‌پذیر می‌کند.
  • کتابخانه‌های داخلی قدرتمند: پایتون بدون نیاز به نصب ابزارهای اضافی، کتابخانه‌هایی مانند os ،shutil و pathlib را در اختیار برنامه‌نویس قرار می‌دهد که برای کار با فایل‌ها و مسیرها طراحی شده‌اند.
  • امکان اتوماسیون کارهای تکراری: بسیاری از کارهایی که به‌صورت دستی انجام می‌دهیم، مانند مرتب‌سازی فایل‌ها، تغییر نام گروهی یا ایجاد ساختار پوشه‌ها، با یک اسکریپت ساده پایتون قابل خودکارسازی هستند.
  • قابلیت توسعه و شخصی‌سازی: یک اسکریپت ساده مدیریت فایل می‌تواند به‌مرور توسعه پیدا کند و به ابزاری کامل‌تر با قابلیت‌هایی مانند گزارش‌گیری، رابط کاربری یا اجرای خودکار تبدیل شود.

به همین دلیل، پایتون انتخاب مناسبی برای ساخت ابزارهای کوچک و کاربردی است که می‌توانند زمان انجام کارهای روزمره را کاهش دهند.

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

برای ساخت اسکریپت سازماندهی فایل‌ها در پایتون، نیازی به نصب کتابخانه‌های خارجی نداریم. پایتون چندین ماژول داخلی در اختیار ما قرار می‌دهد که برای کار با فایل‌ها، پوشه‌ها و مسیرها طراحی شده‌اند.

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

کتابخانه os

ماژول os یکی از قدیمی‌ترین و پرکاربردترین ابزارهای پایتون برای تعامل با سیستم‌عامل است. این کتابخانه امکان انجام کارهایی مانند بررسی محتویات یک پوشه، ساخت مسیرها و کار با فایل‌ها را فراهم می‌کند.

برخی کاربردهای آن:

  • دریافت لیست فایل‌ها و پوشه‌های یک مسیر
  • بررسی وجود یک فایل یا پوشه
  • ساخت مسیرهای جدید
  • کار با مسیر فایل‌ها

برای مثال، با استفاده از تابع os.listdir() می‌توانیم تمام فایل‌ها و پوشه‌های موجود در یک مسیر را مشاهده کنیم.

کتابخانه shutil

ماژول shutil برای انجام عملیات سطح بالاتر روی فایل‌ها طراحی شده است. در این پروژه مهم‌ترین کاربرد آن انتقال فایل‌ها به پوشه‌های جدید خواهد بود.

برخی کاربردهای آن:

  • انتقال فایل‌ها
  • کپی کردن فایل‌ها
  • حذف یا مدیریت فایل‌ها و پوشه‌ها

برای مثال، تابع shutil.move() به ما اجازه می‌دهد یک فایل را از یک مسیر به مسیر دیگر منتقل کنیم.

کتابخانه pathlib

pathlib روش جدیدتر و خواناتری برای کار با مسیرها در پایتون ارائه می‌دهد. این کتابخانه در نسخه‌های جدید پایتون توصیه می‌شود، زیرا کار با مسیرها را ساده‌تر و قابل فهم‌تر می‌کند.

برخی کاربردهای آن:

  • ساخت و مدیریت مسیر فایل‌ها
  • دریافت پسوند فایل
  • بررسی نوع فایل
  • پیمایش پوشه‌ها

برای مثال، با استفاده از ویژگی .suffix در pathlib می‌توانیم پسوند یک فایل مانند .jpg یا .pdf را به‌راحتی استخراج کنیم.

در این پروژه می‌توان از هر سه کتابخانه استفاده کرد، اما در نسخه‌های مدرن‌تر کد، معمولا ترکیب pathlib برای مدیریت مسیرها و shutil برای انتقال فایل‌ها، خواناتر و استانداردتر است.

طراحی پروژه: اسکریپت سازماندهی فایل‌ها چگونه کار می‌کند؟

قبل از شروع کدنویسی، بهتر است منطق کلی برنامه را مشخص کنیم. هدف ما ساخت اسکریپتی است که یک پوشه مشخص را بررسی کند، فایل‌های موجود در آن را بر اساس پسوندشان دسته‌بندی کند و هر فایل را به پوشه مناسب منتقل کند.

فرض کنید پوشه دانلودهای شما شامل فایل‌های مختلفی مانند تصاویر، اسناد، ویدئوها و فایل‌های برنامه‌نویسی باشد:

Downloads/
├── vacation.jpg
├── report.pdf
├── presentation.pptx
├── movie.mp4
├── script.py

اسکریپت ما باید ابتدا فایل‌ها را بررسی کند و پسوند هرکدام را تشخیص دهد. سپس بر اساس نوع فایل، پوشه‌های مناسب را ایجاد کرده و فایل‌ها را به مقصد درست منتقل کند.

پس از اجرای برنامه، ساختار پوشه به شکل مرتب‌تری تبدیل می‌شود:

Downloads/
├── Images/
│   └── vacation.jpg
│
├── Documents/
│   ├── report.pdf
│   └── presentation.pptx
│
├── Videos/
│   └── movie.mp4
│
└── Python/
    └── script.py

منطق کلی برنامه را می‌توان در چند مرحله خلاصه کرد:

  1. دریافت مسیر پوشه موردنظر
  2. خواندن فایل‌های موجود در پوشه
  3. تشخیص نوع فایل بر اساس پسوند
  4. ایجاد پوشه مقصد در صورت نیاز
  5. انتقال فایل‌ها به پوشه مناسب

این پروژه نمونه ساده‌ای از یک فرآیند اتوماسیون است، یعنی به‌جای اینکه کاربر هر بار به‌صورت دستی فایل‌ها را مرتب کند، برنامه این وظیفه تکراری را بر عهده می‌گیرد.

ساخت نسخه ساده اسکریپت سازماندهی فایل‌ها

حالا که منطق کلی برنامه را مشخص کردیم، می‌توانیم اولین نسخه ساده اسکریپت را پیاده‌سازی کنیم. در این نسخه، برنامه یک پوشه را دریافت می‌کند، فایل‌های داخل آن را بررسی کرده و آن‌ها را بر اساس پسوند در پوشه‌های جداگانه قرار می‌دهد.

برای شروع، ابتدا کتابخانه‌های موردنیاز را وارد می‌کنیم:

from pathlib import Path
import shutil

در اینجا از Path برای کار راحت‌تر با مسیرها و از shutil برای انتقال فایل‌ها استفاده می‌کنیم.

تعیین پوشه موردنظر

ابتدا باید مسیری که قرار است فایل‌های آن مرتب شوند را مشخص کنیم:

source_folder = Path("Downloads")

در این مثال، پوشه Downloads بررسی خواهد شد. شما می‌توانید این مسیر را با مسیر دلخواه خود جایگزین کنید.

بررسی فایل‌های موجود در پوشه

با استفاده از متد iterdir() می‌توانیم تمام موارد موجود در پوشه را دریافت کنیم:

for file in source_folder.iterdir():
    if file.is_file():
        print(file.name)

متد is_file() بررسی می‌کند که مورد فعلی یک فایل باشد، نه یک پوشه. به این ترتیب، برنامه فقط فایل‌ها را پردازش می‌کند.

استخراج پسوند فایل‌ها

برای دسته‌بندی فایل‌ها باید نوع آن‌ها را تشخیص دهیم. این کار با ویژگی suffix در Path انجام می‌شود:

extension = file.suffix
print(extension)

برای مثال:

photo.jpg  → .jpg
report.pdf → .pdf
script.py  → .py

ایجاد پوشه مقصد

پس از تشخیص نوع فایل، باید پوشه مناسب را ایجاد کنیم:

destination = source_folder / extension.replace(".", "")

destination.mkdir(exist_ok=True)

برای مثال، یک فایل با پسوند .jpg به پوشه‌ای با نام jpg منتقل خواهد شد.

انتقال فایل‌ها

در مرحله آخر، فایل را به پوشه مقصد منتقل می‌کنیم:

shutil.move(
    str(file),
    str(destination / file.name)
)

تابع move() فایل را از مسیر فعلی به مسیر جدید منتقل می‌کند.

نسخه کامل اسکریپت ساده

در نهایت، کد کامل نسخه اولیه به شکل زیر خواهد بود:

from pathlib import Path
import shutil

source_folder = Path("Downloads")

for file in source_folder.iterdir():
    if file.is_file():
        extension = file.suffix.replace(".", "")

        if extension:
            destination = source_folder / extension
            destination.mkdir(exist_ok=True)

            shutil.move(
                str(file),
                str(destination / file.name)
            )

این نسخه ساده‌ترین شکل یک سازمان‌دهنده فایل است. اگرچه عملکرد اصلی را انجام می‌دهد، اما هنوز محدودیت‌هایی دارد، برای مثال نام پوشه‌ها چندان کاربرپسند نیست، فایل‌های بدون پسوند مدیریت نمی‌شوند و امکان برخورد با فایل‌های تکراری وجود دارد.

بررسی و بهبود کد اسکریپت

در یک ابزار واقعی بهتر است چند مورد را بهبود دهیم تا برنامه خواناتر، امن‌تر و کاربردی‌تر باشد.

استفاده از دسته‌بندی‌های قابل فهم برای فایل‌ها

در نسخه قبلی، پوشه‌ها بر اساس نام پسوند ساخته می‌شدند، برای مثال:

Downloads/
├── jpg/
├── pdf/
└── mp4/

اما برای کاربر، پوشه‌ای مانند Images یا Documents مفهوم بیشتری دارد. به همین دلیل بهتر است پسوندها را در دسته‌های مشخص قرار دهیم.

برای این کار می‌توانیم یک دیکشنری تعریف کنیم:

file_categories = {
    "Images": [".jpg", ".jpeg", ".png", ".gif"],
    "Documents": [".pdf", ".docx", ".txt", ".xlsx"],
    "Videos": [".mp4", ".mkv", ".avi"],
    "Music": [".mp3", ".wav"],
    "Python": [".py"]
}

حالا برنامه می‌تواند به‌جای ساخت پوشه‌ای با نام پسوند، فایل را در دسته مناسب قرار دهد.

پیدا کردن دسته مناسب برای هر فایل

برای تشخیص اینکه یک فایل به کدام دسته تعلق دارد، می‌توانیم یک تابع جداگانه ایجاد کنیم:

def get_category(extension):
    for category, extensions in file_categories.items():
        if extension.lower() in extensions:
            return category

    return "Other"

این تابع پسوند فایل را دریافت می‌کند و نام پوشه مقصد را برمی‌گرداند. اگر پسوند در هیچ دسته‌ای قرار نگیرد، فایل داخل پوشه Other منتقل می‌شود.

مدیریت فایل‌های بدون پسوند

همه فایل‌ها الزاما پسوند ندارند. برای مثال ممکن است یک فایل متنی یا فایل تنظیمات بدون پسوند در پوشه وجود داشته باشد.

در چنین شرایطی بهتر است آن‌ها را نادیده نگیریم و در یک پوشه جداگانه قرار دهیم:

if not file.suffix:
    category = "No Extension"

این کار باعث می‌شود هیچ فایلی بدون بررسی باقی نماند.

جلوگیری از جایگزینی فایل‌های مشابه

یکی از مشکلات مهم در انتقال فایل‌ها، وجود فایل‌هایی با نام یکسان در پوشه مقصد است.

برای مثال اگر دو فایل با نام report.pdf داشته باشیم، انتقال فایل دوم ممکن است باعث حذف یا جایگزینی فایل اول شود.

یک راه ساده برای حل این مشکل، تغییر نام فایل تکراری است:

if destination_file.exists():
    new_name = destination_file.stem + "_copy" + destination_file.suffix
    destination_file = destination / new_name

با این کار، فایل جدید بدون از دست رفتن اطلاعات قبلی ذخیره می‌شود.

اضافه کردن پیام‌های خروجی

برای اینکه کاربر بداند برنامه چه کاری انجام داده است، بهتر است هنگام انتقال فایل‌ها پیام نمایش داده شود:

print(f"{file.name} moved to {category}")

برای مثال:

photo.jpg moved to Images
report.pdf moved to Documents

این قابلیت ساده، تجربه کاربری برنامه را بهتر می‌کند.

با این تغییرات، اسکریپت ما از یک برنامه ساده که فقط پسوندها را جدا می‌کند، به یک ابزار کاربردی‌تر تبدیل می‌شود که می‌تواند فایل‌ها را هوشمندانه‌تر دسته‌بندی و مدیریت کند.

اجرای اسکریپت از طریق خط فرمان (CLI)

تا اینجا مسیر پوشه را مستقیماً داخل کد قرار دادیم. این روش برای آزمایش اولیه مناسب است، اما اگر بخواهیم از اسکریپت خود مانند یک ابزار واقعی استفاده کنیم، بهتر است کاربر بتواند هنگام اجرای برنامه مسیر پوشه موردنظر را وارد کند.

برای این کار می‌توانیم از ماژول داخلی argparse در پایتون استفاده کنیم. این ماژول امکان ساخت ابزارهای خط فرمان (Command Line Interface) را فراهم می‌کند.

چرا CLI کردن اسکریپت مفید است؟

فرض کنید هر بار بخواهید پوشه‌ای را مرتب کنید. در نسخه فعلی باید وارد کد شوید و مقدار مسیر را تغییر دهید:

source_folder = Path("Downloads")

اما با استفاده از CLI، می‌توانیم مسیر را هنگام اجرای برنامه مشخص کنیم:

python organizer.py Downloads

یا:

python organizer.py "C:/Users/User/Desktop/MyFiles"

در این حالت، یک اسکریپت ثابت داریم که می‌تواند هر پوشه‌ای را سازماندهی کند.

دریافت مسیر از کاربر با argparse

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

import argparse

سپس یک شی برای مدیریت ورودی‌ها ایجاد می‌کنیم:

parser = argparse.ArgumentParser(
    description="Organize files based on their extensions"
)

در این قسمت یک توضیح کوتاه برای ابزار تعریف می‌کنیم که هنگام نمایش راهنما به کاربر نشان داده می‌شود.

تعریف ورودی مسیر پوشه

حالا باید مشخص کنیم که برنامه یک مسیر به‌عنوان ورودی دریافت می‌کند:

parser.add_argument(
    "folder",
    help="Path to the folder you want to organize"
)

پس از این مرحله، کاربر باید هنگام اجرای برنامه مسیر پوشه را وارد کند.

دریافت مقدار واردشده توسط کاربر

با استفاده از parse_args() می‌توانیم مقدار واردشده را دریافت کنیم:

args = parser.parse_args()

source_folder = Path(args.folder)

حالا متغیر source_folder به مسیری که کاربر وارد کرده اشاره می‌کند.

بررسی وجود پوشه

بهتر است قبل از شروع عملیات، بررسی کنیم مسیر واردشده معتبر است:

if not source_folder.exists():
    print("Folder does not exist")
    exit()

این کار باعث می‌شود برنامه در صورت وارد شدن مسیر اشتباه، به‌درستی خطا را مدیریت کند.

اجرای نهایی ابزار

حالا کاربر می‌تواند برنامه را به شکل زیر اجرا کند:

python organizer.py Downloads

و برنامه تمام فایل‌های موجود در پوشه Downloads را دسته‌بندی خواهد کرد.

توسعه بیشتر ابزار خط فرمان

پس از اضافه کردن CLI، می‌توان قابلیت‌های بیشتری نیز به برنامه اضافه کرد:

  • تعیین پوشه خروجی جداگانه
  • فعال یا غیرفعال کردن انتقال فایل‌ها
  • نمایش گزارش فایل‌های منتقل‌شده
  • اضافه کردن حالت آزمایشی (Dry Run) برای مشاهده نتیجه قبل از اجرا
  • انتخاب دسته‌بندی‌های دلخواه توسط کاربر

با تبدیل اسکریپت به یک ابزار خط فرمان، پروژه از یک کد شخصی ساده به یک ابزار قابل استفاده‌تر تبدیل می‌شود، ابزاری که می‌توان آن را در سیستم‌های مختلف اجرا کرد و برای مدیریت فایل‌ها از آن استفاده کرد.

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

اسکریپت‌هایی مانند ابزار سازماندهی فایل‌ها شاید در نگاه اول پروژه‌های ساده‌ای به نظر برسند، اما در دنیای واقعی می‌توانند بسیاری از کارهای تکراری را خودکار کنند. هدف اصلی چنین ابزارهایی فقط مرتب کردن چند فایل نیست، بلکه نشان دادن قدرت پایتون در اتوماسیون فرآیندها و کاهش کارهای دستی است.

در ادامه چند نمونه از کاربردهای واقعی این اسکریپت را بررسی می‌کنیم.

مرتب‌سازی پوشه Downloads

یکی از رایج‌ترین کاربردها، مدیریت پوشه دانلودها است. بسیاری از کاربران روزانه فایل‌های مختلفی مانند تصویر، مقاله، فایل فشرده و نرم‌افزار دانلود می‌کنند و بعد از مدتی با پوشه‌ای شلوغ مواجه می‌شوند.

با اجرای دوره‌ای این اسکریپت می‌توان:

  • تصاویر را به پوشه Images منتقل کرد.
  • فایل‌های PDF و اسناد را در Documents قرار داد.
  • فایل‌های فشرده مانند ZIP و RAR را جدا کرد.
  • فایل‌های نصب نرم‌افزارها را در پوشه‌ای مشخص نگه داشت.

مدیریت فایل‌های پروژه‌های برنامه‌نویسی

برنامه‌نویسان معمولاً با تعداد زیادی فایل مختلف سروکار دارند، از فایل‌های کد و تنظیمات گرفته تا مستندات و خروجی‌های پروژه.

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

  • فایل‌های Python، جاوااسکریپت یا جاوا را جدا کند.
  • فایل‌های مستندات مانند Markdown و PDF را دسته‌بندی کند.
  • فایل‌های خروجی Build یا Log را در پوشه‌های مشخص قرار دهد.

این کار مخصوصا در پروژه‌های بزرگ که فایل‌های زیادی تولید می‌کنند، باعث نظم بیشتر می‌شود.

آرشیو کردن فایل‌های قدیمی

در سازمان‌ها و حتی استفاده شخصی، گاهی تعداد زیادی فایل قدیمی وجود دارد که باید برای نگهداری بلندمدت آرشیو شوند.

با توسعه این اسکریپت می‌توان قابلیت‌هایی مانند:

  • مرتب‌سازی فایل‌ها بر اساس تاریخ ایجاد یا تغییر
  • انتقال فایل‌های قدیمی به پوشه Archive
  • دسته‌بندی فایل‌ها بر اساس سال و ماه

را اضافه کرد.

برای مثال:

Archive/
├── 2025/
│   ├── January/
│   └── February/
└── 2026/
    └── March/

مدیریت تصاویر و فایل‌های رسانه‌ای

افرادی که با تولید محتوا، عکاسی یا ویرایش ویدئو سروکار دارند، با حجم زیادی از فایل‌های رسانه‌ای مواجه هستند.

این ابزار می‌تواند برای:

  • جدا کردن تصاویر از ویدئوها
  • دسته‌بندی فایل‌ها بر اساس فرمت
  • ایجاد ساختار منظم برای پروژه‌های تولید محتوا

استفاده شود.

ساخت ابزارهای اتوماسیون شخصی

یکی از جذاب‌ترین بخش‌های پایتون، امکان ساخت ابزارهای کوچک برای نیازهای روزمره است.

برای مثال می‌توان همین پروژه را توسعه داد تا:

  • هر روز به‌صورت خودکار یک پوشه را مرتب کند.
  • فایل‌های جدید را شناسایی و دسته‌بندی کند.
  • گزارش عملیات انجام‌شده را ذخیره کند.
  • فایل‌های تکراری را پیدا و حذف کند.

استفاده در محیط‌های سازمانی

در شرکت‌ها نیز مدیریت فایل‌ها یک نیاز واقعی است. برای مثال، یک تیم ممکن است روزانه صدها فایل گزارش، خروجی سیستم یا اسناد کاری تولید کند.

با توسعه چنین اسکریپت‌هایی می‌توان فرآیندهایی مانند:

  • مرتب‌سازی گزارش‌های روزانه
  • انتقال فایل‌ها بین پوشه‌ها
  • آماده‌سازی فایل‌ها برای پردازش بعدی
  • استانداردسازی ساختار ذخیره‌سازی

را خودکار کرد.

این پروژه نمونه‌ای کوچک از یک مفهوم بزرگ‌تر در دنیای برنامه‌نویسی است: استفاده از کد برای حذف کارهای تکراری. بسیاری از ابزارهای حرفه‌ای که امروزه در شرکت‌ها استفاده می‌شوند، از همین ایده ساده شروع شده‌اند، یعنی شناسایی یک مشکل روزمره و ساخت برنامه‌ای که بتواند آن را سریع‌تر و دقیق‌تر حل کند.

ایده‌هایی برای توسعه بیشتر اسکریپت

اسکریپتی که تا اینجا ساختیم، یک ابزار ساده اما کاربردی برای سازماندهی فایل‌ها است. با این حال، می‌توان آن را به روش‌های مختلفی توسعه داد و به یک ابزار حرفه‌ای‌تر برای مدیریت فایل‌ها تبدیل کرد.

در ادامه چند ایده برای بهبود این پروژه را بررسی می‌کنیم:

ساخت رابط کاربری گرافیکی (GUI)

در نسخه فعلی، کاربر باید از طریق خط فرمان مسیر پوشه را وارد کند. می‌توان با استفاده از کتابخانه‌هایی مانند Tkinter یک رابط گرافیکی ایجاد کرد تا کاربر بتواند:

  • پوشه موردنظر را با یک کلیک انتخاب کند.
  • عملیات سازماندهی را شروع یا متوقف کند.
  • گزارش فایل‌های منتقل‌شده را مشاهده کند.

این تغییر باعث می‌شود ابزار برای کاربران غیر فنی نیز قابل استفاده باشد.

ایجاد گزارش از عملیات انجام‌شده

می‌توان قابلیت ثبت گزارش (Logging) را به برنامه اضافه کرد تا مشخص شود چه فایل‌هایی منتقل شده‌اند.

برای مثال:

photo.jpg → Images
report.pdf → Documents
movie.mp4 → Videos

این گزارش‌ها می‌توانند برای بررسی خطاها یا پیگیری تغییرات بسیار مفید باشند.

اجرای خودکار در زمان مشخص

به‌جای اجرای دستی برنامه، می‌توان آن را زمان‌بندی کرد.

برای مثال:

  • هر روز ساعت مشخص پوشه Downloads را مرتب کند.
  • هر هفته فایل‌های قدیمی را آرشیو کند.
  • هنگام روشن شدن سیستم اجرا شود.

در سیستم‌عامل‌های مختلف می‌توان از ابزارهایی مانند Task Scheduler در ویندوز یا Cron در لینوکس برای این کار استفاده کرد.

تشخیص فایل‌های تکراری

یکی از مشکلات رایج در مدیریت فایل‌ها، وجود نسخه‌های تکراری از یک فایل است.

با استفاده از Hash می‌توان محتوای فایل‌ها را بررسی کرد و فایل‌هایی که دقیقاً یکسان هستند را شناسایی کرد.

برای مثال:

photo_copy.jpg
photo(1).jpg
old_photo.jpg

ممکن است همگی یک فایل مشابه باشند و امکان حذف یا انتقال آن‌ها وجود داشته باشد.

پشتیبانی از قوانین شخصی‌سازی‌شده

می‌توان برنامه را طوری طراحی کرد که کاربر خودش قوانین دسته‌بندی را تعریف کند.

مثلا:

{
    "Work": [".xlsx", ".docx"],
    "Programming": [".py", ".js"],
    "Design": [".psd", ".fig"]
}

در این حالت، ابزار برای نیازهای مختلف قابل تنظیم خواهد بود.

فشرده‌سازی و آرشیو فایل‌ها

یک قابلیت دیگر، اضافه کردن امکان فشرده‌سازی فایل‌ها است.

برای مثال:

  • فایل‌های قدیمی‌تر از یک سال را پیدا کند.
  • آن‌ها را داخل فایل ZIP قرار دهد.
  • نسخه اصلی را به آرشیو منتقل کند.

این ویژگی برای مدیریت فضای ذخیره‌سازی بسیار کاربردی است.

با اضافه کردن چنین قابلیت‌هایی، یک اسکریپت ساده چند ده خطی می‌تواند به یک ابزار کامل مدیریت فایل تبدیل شود. نکته مهم این است که در پروژه‌های واقعی نیز بسیاری از ابزارهای بزرگ، از همین اتوماسیون‌های کوچک برای حل یک مشکل مشخص شروع شده‌اند.

جمع‌بندی

سازماندهی فایل‌ها یکی از کارهای ساده اما زمان‌گیری است که می‌توان آن را به‌راحتی با پایتون خودکار کرد. در این مطلب با ساخت یک اسکریپت آشنا شدیم که می‌تواند فایل‌ها را بر اساس پسوندشان شناسایی کرده و در پوشه‌های مناسب قرار دهد.

در این مسیر، با مفاهیمی مانند کار با مسیرها، استفاده از کتابخانه‌های pathlib و shutil، مدیریت فایل‌ها و ساخت ابزارهای خط فرمان آشنا شدیم. همچنین دیدیم که چگونه می‌توان یک اسکریپت ساده را با قابلیت‌هایی مانند گزارش‌گیری، رابط گرافیکی و اجرای خودکار توسعه داد.

این پروژه نمونه‌ای کوچک از قدرت پایتون در اتوماسیون کارهای روزمره است. با کمی خلاقیت، می‌توان همین ایده را برای بسیاری از فرآیندهای تکراری دیگر نیز به کار برد و ابزارهایی ساخت که زمان و انرژی زیادی را صرفه‌جویی می‌کنند.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

/@arastoo
ارسطو عباسی
کارشناس تست نرم‌افزار و مستندات

...

دیدگاه و پرسش
برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

کارشناس تست نرم‌افزار و مستندات