Skip to content

akbarisajjad/Scanner-file-windows-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

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

این کد یک برنامه پایتون است که از کتابخانه‌های مختلفی مانند tkinter برای ایجاد رابط کاربری گرافیکی (GUI)، hashlib برای محاسبه هش فایل‌ها، و os برای کار با فایل‌ها و دایرکتوری‌ها استفاده می‌کند. هدف اصلی این برنامه، بررسی فایل‌های تکراری و خراب در یک دایرکتوری مشخص و ایجاد گزارش از این بررسی‌ها است. در ادامه، به بررسی اجزای مختلف این کد می‌پردازیم:

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

  • os: برای کار با فایل‌ها و دایرکتوری‌ها.
  • hashlib: برای محاسبه هش فایل‌ها.
  • tkinter: برای ایجاد رابط کاربری گرافیکی.
  • filedialog, messagebox, ttk: از ماژول‌های tkinter برای ایجاد دیالوگ‌ها و ویجت‌ها.
  • json و csv: برای ذخیره گزارش‌ها در قالب‌های JSON و CSV.
  • PIL: برای بررسی سلامت فایل‌های تصویری.
  • mutagen: برای بررسی سلامت فایل‌های صوتی.
  • ffmpeg: برای بررسی سلامت فایل‌های ویدیویی.
  • PyPDF2: برای بررسی سلامت فایل‌های PDF.
  • tqdm: برای نمایش پیشرفت عملیات اسکن.

2. تابع get_file_hash

  • این تابع هش SHA-256 یک فایل را محاسبه می‌کند. این هش برای شناسایی فایل‌های تکراری استفاده می‌شود.
  • اگر در حین خواندن فایل خطایی رخ دهد، تابع None برمی‌گرداند.

3. تابع check_file_integrity

  • این تابع سلامت فایل را بررسی می‌کند. بسته به پسوند فایل، از کتابخانه‌های مختلفی مانند PIL برای تصاویر، mutagen برای فایل‌های صوتی، ffmpeg برای ویدیوها، و PyPDF2 برای فایل‌های PDF استفاده می‌کند.
  • اگر فایل خراب باشد، آن را حذف می‌کند و وضعیت "خراب - حذف شد" را برمی‌گرداند. در غیر این صورت، وضعیت "سالم" را برمی‌گرداند.

4. تابع scan_files

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

5. تابع save_report

  • این تابع گزارش‌های ایجاد شده را در دو قالب JSON و CSV ذخیره می‌کند.

6. تابع delete_duplicates

  • این تابع فایل‌های تکراری شناسایی شده را حذف می‌کند.

7. تابع start_scan

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

8. رابط کاربری گرافیکی

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

نقاط قوت کد:

  • جامعیت: کد توانایی بررسی انواع مختلف فایل‌ها (تصاویر، صوتی، ویدیویی، PDF، متنی) را دارد.
  • گزارش‌گیری: گزارش‌ها به دو فرمت JSON و CSV ذخیره می‌شوند که قابل استفاده و تحلیل هستند.
  • رابط کاربری ساده: رابط کاربری گرافیکی ساده و کاربرپسند است.

نقاط ضعف و پیشنهادات:

  • خطاهای احتمالی: در برخی موارد، ممکن است خطاهایی در بررسی سلامت فایل‌ها رخ دهد که بهتر است به طور دقیق‌تر مدیریت شوند.
  • کارایی: اسکن فایل‌های بزرگ ممکن است زمان‌بر باشد. می‌توان از روش‌های بهینه‌سازی مانند موازی‌سازی استفاده کرد.
  • امنیت: حذف خودکار فایل‌های خراب ممکن است خطرناک باشد. بهتر است قبل از حذف، از کاربر تأیید گرفته شود.
  • قابلیت توسعه: می‌توان قابلیت‌های بیشتری مانند بررسی فایل‌های فشرده (مثل ZIP) یا پشتیبانی از فرمت‌های بیشتر اضافه کرد.

نحوه اجرا: کد را در یک فایل پایتون (مثلاً file_scanner.py) ذخیره کنید.

مطمئن شوید که تمام کتابخانه‌های مورد نیاز نصب شده‌اند:

bash Copy pip install tkinter pillow mutagen ffmpeg-python PyPDF2 tqdm rarfile برنامه را اجرا کنید:

bash Copy python file_scanner.py دکمه "شروع اسکن" را کلیک کنید و دایرکتوری مورد نظر را انتخاب کنید.

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

##در ورژن بعدی ویژگی های زیر را اضافه خواهیم کرد

برای بهبود این نرم‌افزار و ارتقاء عملکرد و تجربه کاربری، پیشنهادهای زیر را ارائه می‌دهم:


  1. بهبود رابط کاربری (UI/UX)

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

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

نمایش تعداد فایل‌های اسکن‌شده و حذف‌شده در زمان واقعی.

پشتیبانی از حالت تاریک (Dark Mode) برای زیبایی و راحتی چشم کاربر.


  1. بهبود عملکرد اسکن و بهینه‌سازی

استفاده از پردازش چند‌نخی (Multithreading) برای افزایش سرعت اسکن و جلوگیری از قفل شدن رابط کاربری.

ایجاد کش (Cache) برای هش‌ها: ذخیره هش فایل‌های قبلاً بررسی‌شده جهت جلوگیری از محاسبه مجدد.

بهینه‌سازی حافظه با استفاده از generator برای خواندن فایل‌ها و جلوگیری از مصرف زیاد رم در فایل‌های بزرگ.


  1. افزودن ویژگی‌های پیشرفته

پیش‌نمایش فایل‌های تکراری: نمایش تصاویر کوچک (thumbnail) یا جزئیات پیش‌نمایش قبل از حذف.

امکان بازیابی (Undo) فایل‌های حذف‌شده: ارسال فایل‌ها به سطل زباله به‌جای حذف دائمی برای افزایش امنیت.

قابلیت زمان‌بندی اسکن: مثلاً هر هفته به‌صورت خودکار فایل‌ها را بررسی کند.

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

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


  1. افزودن تنظیمات بیشتر

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

تنظیمات مربوط به گزارش‌ها: انتخاب محل ذخیره گزارش‌ها و فرمت موردنظر.

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


  1. ارتقاء امنیت نرم‌افزار

ایجاد تأییدیه دو مرحله‌ای قبل از حذف دسته‌ای فایل‌ها برای جلوگیری از حذف اشتباه.

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


  1. بهینه‌سازی گزارش‌گیری

افزودن جزئیات بیشتر به گزارش‌ها مانند تاریخ ایجاد فایل، تاریخ آخرین تغییر، نوع فایل و سطح خطر (تکراری یا خراب).

امکان ارسال گزارش به ایمیل کاربر یا ذخیره در فضای ابری.


  1. افزودن پشتیبانی چندزبانه

اضافه کردن فایل ترجمه (.po و .mo) برای پشتیبانی از زبان‌های مختلف.

رابط کاربری با امکان انتخاب زبان دلخواه.


  1. ارائه نسخه نصبی (Executable)

تبدیل برنامه به فایل نصبی ویندوز (.exe) با استفاده از ابزارهایی مثل PyInstaller یا cx_Freeze، تا کاربران بدون نیاز به نصب Python، از نرم‌افزار استفاده کنند.


  1. مدیریت لاگ‌ها و خطاها

اضافه کردن سیستم لاگ‌گیری حرفه‌ای با استفاده از کتابخانه logging برای ثبت تمام خطاها و هشدارها.

نمایش خطاها در رابط کاربری به‌صورت واضح و قابل‌فهم.


  1. ارائه نسخه پیشرفته با ویژگی‌های سفارشی

قابلیت تعیین فایل‌هایی که هرگز نباید حذف شوند (لیست سفید).

بررسی فایل‌های سیستم و جلوگیری از دسترسی به پوشه‌های مهم برای محافظت از داده‌های سیستمی.


اگر این ویژگی‌ها مورد تأیید است، می‌توانم مرحله‌به‌مرحله بهبودها را اضافه کرده و کد کامل را ارائه دهم.

شما کدام بخش‌ها را در اولویت قرار می‌دهید؟

About

This code is a useful tool for checking for duplicate and corrupted files and can be very useful for managing files in a large directory. However, it could be made more robust and reliable by improving error handling and performance optimization.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages