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

چرا باید فایلهای تکراری را حذف کنیم؟
فایلهای تکراری مثل مهمانهای ناخواندهای هستند که فضای ذخیرهسازی شما را اشغال میکنند. دلایل زیادی برای حذف آنها وجود دارد:
- آزادسازی فضای دیسک: حذف فایلهای تکراری میتواند گیگابایتها فضا را آزاد کند.
- سازماندهی بهتر: با حذف فایلهای اضافی، مدیریت پوشهها و پیدا کردن فایلهای مورد نیاز آسانتر میشود.
- افزایش سرعت سیستم: کاهش تعداد فایلها میتواند عملکرد سیستم را بهبود ببخشد.
- صرفهجویی در زمان: دیگر لازم نیست وقت خود را صرف جستجوی فایل اصلی بین چندین کپی کنید.
حالا بیایید ببینیم چگونه با پایتون این کار را انجام دهیم.
ابزارهای مورد نیاز برای شروع
برای پیدا کردن و حذف فایلهای تکراری با پایتون، به موارد زیر نیاز دارید:
- پایتون: نسخه 3.6 یا بالاتر روی سیستم شما نصب باشد.
- کتابخانههای پایتون: ما از کتابخانههای استاندارد مثل os و hashlib استفاده میکنیم، بنابراین نیازی به نصب کتابخانه اضافی نیست.
- یک ویرایشگر کد: مثل VS Code یا PyCharm برای نوشتن و اجرای کد.
چگونه فایلهای تکراری را پیدا کنیم؟
برای پیدا کردن فایلهای تکراری، باید محتوای فایلها را مقایسه کنیم، نه فقط نام آنها. این کار را با استفاده از هش کردن (Hashing) انجام میدهیم. هش کردن فرآیندی است که محتوای یک فایل را به یک رشته منحصربهفرد (مثل MD5 یا SHA-1) تبدیل میکند. اگر دو فایل هش یکسانی داشته باشند، محتوای آنها یکسان است، حتی اگر نام یا محل ذخیرهسازیشان متفاوت باشد.
مراحل کلی:
- جمعآوری تمام فایلها: با استفاده از ماژول os، تمام فایلهای موجود در یک پوشه و زیرپوشههای آن را پیدا میکنیم.
- محاسبه هش فایلها: برای هر فایل، یک مقدار هش تولید میکنیم.
- شناسایی فایلهای تکراری: فایلهایی که هش یکسانی دارند را گروهبندی میکنیم.
- حذف فایلهای اضافی: فایلهای تکراری را به صورت دستی یا خودکار حذف میکنیم.
کد پایتون برای پیدا کردن و حذف فایلهای تکراری
در ادامه، یک کد ساده و کاربردی برای پیدا کردن و حذف فایلهای تکراری ارائه میدهیم. این کد به شما امکان میدهد فایلهای تکراری را شناسایی کرده و با تأیید شما، آنها را حذف کنید.
import os
import hashlib
from collections import defaultdict
def calculate_file_hash(file_path):
"""Calculate SHA-1 hash of a file."""
sha1 = hashlib.sha256()
with open(file_path, 'rb') as f:
while True:
chunk = f.read(8192)
if not chunk:
break
sha1.update(chunk)
return sha1.hexdigest()
def find_duplicates(directory):
"""Find duplicate files in a directory and its subdirectories."""
file_hashes = defaultdict(list)
# Walk through all files in the directory
for root, _, files in os.walk(directory):
for filename in files:
file_path = os.path.join(root, filename)
file_hash = calculate_file_hash(file_path)
file_hashes[file_hash].append(file_path)
# Filter out non-duplicate files
duplicates = {hash_val: paths for hash_val, paths in file_hashes.items() if len(paths) > 1}
return duplicates
def delete_duplicates(duplicates):
"""Delete duplicate files with user confirmation."""
for hash_val, file_paths in duplicates.items():
print(f"\nDuplicate files found with hash {hash_val}:")
for i, path in enumerate(file_paths, 1):
print(f"{i}. {path}")
# Keep the first file, ask for confirmation to delete others
for path in file_paths[1:]:
response = input(f"Do you want to delete {path}? (y/n): ").lower()
if response == 'y':
try:
os.remove(path)
print(f"Deleted: {path}")
except Exception as e:
print(f"Error deleting {path}: {e}")
else:
print(f"Kept: {path}")
if __name__ == "__main__":
directory = input("Enter the directory path to scan for duplicates: ")
if os.path.isdir(directory):
duplicates = find_duplicates(directory)
if duplicates:
print(f"\nFound {len(duplicates)} sets of duplicate files.")
delete_duplicates(duplicates)
else:
print("No duplicate files found.")
else:
print("Invalid directory path.")Pythonتوضیح کد:
- ماژول hashlib: برای محاسبه هش فایلها از الگوریتم SHA-1 استفاده میکنیم. این الگوریتم سریع و قابل اعتماد است.
- ماژول os: برای پیمایش در پوشهها و حذف فایلها به کار میرود.
- تابع calculate_file_hash: هش هر فایل را محاسبه میکند.
- تابع find_duplicates: تمام فایلها را اسکن کرده و فایلهای با هش یکسان را گروهبندی میکند.
- تابع delete_duplicates: فایلهای تکراری را نمایش داده و با تأیید کاربر، آنها را حذف میکند.
نکات مهم هنگام استفاده از کد
- پشتیبانگیری کنید: قبل از حذف فایلها، از دادههای مهم خود نسخه پشتیبان تهیه کنید.
- مسیر پوشه را درست وارد کنید: مسیر پوشهای که میخواهید اسکن کنید را به درستی وارد کنید (مثل C:/Users/YourName/Documents).
- تست روی پوشه کوچک: ابتدا کد را روی یک پوشه کوچک تست کنید تا مطمئن شوید همه چیز درست کار میکند.
- اجازه دسترسی: مطمئن شوید پایتون اجازه دسترسی به فایلها و پوشهها را دارد.
مزایای استفاده از پایتون برای حذف فایلهای تکراری
- رایگان و متنباز: نیازی به خرید نرمافزارهای گرانقیمت ندارید.
- انعطافپذیری: میتوانید کد را به دلخواه خود تغییر دهید، مثلاً برای حذف خودکار یا ذخیره گزارش.
- یادگیری آسان: حتی اگر تازهکار باشید، این کد ساده است و به راحتی میتوانید آن را درک کنید.
- چندپلتفرمی: این کد روی ویندوز، مک و لینوکس کار میکند.
جایگزینهای پایتون برای حذف فایلهای تکراری
اگر ترجیح میدهید از نرمافزارهای آماده استفاده کنید، برنامههایی مثل CCleaner، Duplicate Cleaner یا Easy Duplicate Finder هم گزینههای خوبی هستند. اما این ابزارها معمولاً پولی هستند یا امکانات محدودی در نسخه رایگان ارائه میدهند. با پایتون، شما کنترل کامل روی فرآیند دارید و میتوانید آن را به نیازهای خاص خود تنظیم کنید.
نتیجهگیری
حذف فایلهای تکراری با پایتون نه تنها یک راهحل کاربردی برای آزادسازی فضای دیسک است، بلکه یک پروژه جذاب برای یادگیری برنامهنویسی نیز محسوب میشود. با کدی که در این مقاله ارائه دادیم، میتوانید به راحتی فایلهای تکراری را در هر پوشهای پیدا کرده و حذف کنید. کافی است کمی وقت بگذارید، کد را اجرا کنید و از نتیجه آن لذت ببرید. اگر سوال یا پیشنهادی دارید، در بخش نظرات با ما در میان بگذارید!