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

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

مدیریت فایل‌ها یکی از ضروری‌ترین جنبه‌های کار با کامپیوتر است. در حالی که سیستم‌عامل‌ها ابزارهای پیش‌فرضی برای این کار ارائه می‌دهند، ساخت یک برنامه مدیریت فایل سفارشی با پایتون می‌تواند یک تمرین آموزشی عالی و یک پروژه کاربردی باشد. این مقاله به شما کمک می‌کند تا یک برنامه مدیریت فایل ساده اما کارآمد را با استفاده از پایتون ایجاد کنید. این پروژه در دسته ‘پروژه‌های خلاقانه و کاربردی’ قرار می‌گیرد و به شما امکان می‌دهد تا با مفاهیم کلیدی پایتون مانند کار با فایل‌ها، رابط کاربری گرافیکی (GUI) و سازماندهی کد آشنا شوید.

پیش‌نیازها

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

  • پایتون نصب شده (نسخه 3.x توصیه می‌شود)
  • یک ویرایشگر کد (مانند VS Code، PyCharm یا Sublime Text)
  • آشنایی اولیه با مفاهیم برنامه‌نویسی پایتون (متغیرها، حلقه‌ها، شرط‌ها، توابع)

طراحی برنامه

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

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

پیاده‌سازی برنامه

برای ساخت رابط کاربری گرافیکی (GUI) از کتابخانه Tkinter استفاده خواهیم کرد. Tkinter یک کتابخانه استاندارد پایتون برای ایجاد رابط‌های کاربری گرافیکی است و به راحتی قابل استفاده است.

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

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

import tkinter as tk
from tkinter import filedialog, messagebox
import os
import shutil

2. تعریف توابع اصلی

اکنون توابع اصلی برنامه را تعریف می‌کنیم:

الف. تابع نمایش لیست فایل‌ها و پوشه‌ها

def update_file_list(directory):
    file_list.delete(0, tk.END)
    try:
        items = os.listdir(directory)
        for item in items:
            file_list.insert(tk.END, item)
    except Exception as e:
        messagebox.showerror("Error", str(e))

ب. تابع باز کردن فایل

def open_file():
    selected_item = file_list.get(tk.ACTIVE)
    if selected_item:
        path = os.path.join(current_directory, selected_item)
        try:
            os.startfile(path) # فقط برای ویندوز
        except Exception as e:
            messagebox.showerror("Error", str(e))

ج. تابع ایجاد پوشه جدید

def create_folder():
    folder_name = tk.simpledialog.askstring("Create Folder", "Enter folder name:")
    if folder_name:
        path = os.path.join(current_directory, folder_name)
        try:
            os.mkdir(path)
            update_file_list(current_directory)
        except Exception as e:
            messagebox.showerror("Error", str(e))

د. تابع حذف فایل یا پوشه

def delete_item():
    selected_item = file_list.get(tk.ACTIVE)
    if selected_item:
        path = os.path.join(current_directory, selected_item)
        try:
            if os.path.isfile(path):
                os.remove(path)
            elif os.path.isdir(path):
                shutil.rmtree(path)
            update_file_list(current_directory)
        except Exception as e:
            messagebox.showerror("Error", str(e))

ه. تابع تغییر نام فایل یا پوشه

def rename_item():
    selected_item = file_list.get(tk.ACTIVE)
    if selected_item:
        new_name = tk.simpledialog.askstring("Rename", "Enter new name:")
        if new_name:
            old_path = os.path.join(current_directory, selected_item)
            new_path = os.path.join(current_directory, new_name)
            try:
                os.rename(old_path, new_path)
                update_file_list(current_directory)
            except Exception as e:
                messagebox.showerror("Error", str(e))

و. تابع نمایش اطلاعات فایل

def show_file_info():
    selected_item = file_list.get(tk.ACTIVE)
    if selected_item:
        path = os.path.join(current_directory, selected_item)
        try:
            file_size = os.path.getsize(path)
            last_modified = os.path.getmtime(path)
            messagebox.showinfo("File Info", f"Size: {file_size} bytesnLast Modified: {last_modified}")
        except Exception as e:
            messagebox.showerror("Error", str(e))

3. ایجاد رابط کاربری گرافیکی

اکنون رابط کاربری گرافیکی را ایجاد می‌کنیم:

root = tk.Tk()
root.title("File Manager")

current_directory = os.path.expanduser("~") # دایرکتوری پیش‌فرض

# فریم برای دایرکتوری فعلی
directory_frame = tk.Frame(root)
directory_frame.pack(pady=10)

directory_label = tk.Label(directory_frame, text="Current Directory:")
directory_label.pack(side=tk.LEFT)

directory_entry = tk.Entry(directory_frame, width=50)
directory_entry.insert(0, current_directory)
directory_entry.pack(side=tk.LEFT)

# دکمه برای تغییر دایرکتوری
def change_directory():
    new_directory = filedialog.askdirectory()
    if new_directory:
        current_directory = new_directory
        directory_entry.delete(0, tk.END)
        directory_entry.insert(0, current_directory)
        update_file_list(current_directory)

change_button = tk.Button(directory_frame, text="Change Directory", command=change_directory)
change_button.pack(side=tk.LEFT)

# لیست فایل‌ها و پوشه‌ها
file_list = tk.Listbox(root, width=70, height=20)
file_list.pack(pady=10)

# دکمه‌ها
button_frame = tk.Frame(root)
button_frame.pack(pady=10)

open_button = tk.Button(button_frame, text="Open", command=open_file)
open_button.pack(side=tk.LEFT, padx=5)

create_button = tk.Button(button_frame, text="Create Folder", command=create_folder)
create_button.pack(side=tk.LEFT, padx=5)

delete_button = tk.Button(button_frame, text="Delete", command=delete_item)
delete_button.pack(side=tk.LEFT, padx=5)

rename_button = tk.Button(button_frame, text="Rename", command=rename_item)
rename_button.pack(side=tk.LEFT, padx=5)

info_button = tk.Button(button_frame, text="Info", command=show_file_info)
info_button.pack(side=tk.LEFT, padx=5)

# به‌روزرسانی لیست فایل‌ها در شروع برنامه
update_file_list(current_directory)

root.mainloop()

توضیحات کد

کد بالا شامل مراحل زیر است:

  • وارد کردن کتابخانه‌های Tkinter، filedialog، messagebox، os و shutil.
  • تعریف توابع اصلی برای نمایش لیست فایل‌ها، باز کردن فایل، ایجاد پوشه، حذف فایل/پوشه، تغییر نام فایل/پوشه و نمایش اطلاعات فایل.
  • ایجاد رابط کاربری گرافیکی با استفاده از Tkinter.
  • ایجاد یک فریم برای نمایش دایرکتوری فعلی و یک دکمه برای تغییر دایرکتوری.
  • ایجاد یک لیست‌باکس برای نمایش لیست فایل‌ها و پوشه‌ها.
  • ایجاد دکمه‌هایی برای انجام عملیات مختلف بر روی فایل‌ها و پوشه‌ها.
  • به‌روزرسانی لیست فایل‌ها در شروع برنامه.

بهبود برنامه

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

  • پشتیبانی از drag and drop
  • نمایش آیکون‌های مختلف برای فایل‌ها و پوشه‌ها
  • امکان کپی و انتقال فایل‌ها و پوشه‌ها
  • امکان جستجو در فایل‌ها و پوشه‌ها
  • پشتیبانی از سیستم‌عامل‌های مختلف (لینوکس، مک)

نتیجه‌گیری

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

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *