Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Junk File Organizer ใน Python: จัดระเบียบไฟล์อัตโนมัติ

สคริปต์ Python สำหรับคนเก็บไฟล์เยอะ ไม่อยากจัดเอง โปรแกรมจะย้ายไฟล์ไปโฟลเดอร์ตามประเภท (Images, Videos, Documents, etc.) และลบโฟลเดอร์ว่างอัตโนมัติ

โครงสร้างก่อน/หลัง

ก่อน: ไฟล์หลั่งไหลในโฟลเดอร์เดียว
หลัง: ไฟล์ถูกจัดกลุ่มอยู่ในโฟลเดอร์ IMAGES, VIDEOS, DOCUMENTS, ARCHIVES, AUDIO, PDF, PYTHON, XML, EXE, SHELL, HTML, PLAINTEXT, OTHER-FILES

โค้ดเต็ม (Copy ใส่ไฟล์ .py แล้วรันในโฟลเดอร์ที่ต้องการจัด)

# Python Lazy Junk Files Organizer
import os
from pathlib import Path

# 1. กำหนด副檔名 (extensions) สำหรับแต่ละประเภท
DIRECTORIES = {
    "HTML": [".html5", ".html", ".htm", ".xhtml"],
    "IMAGES": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", ".svg", ".heif", ".psd"],
    "VIDEOS": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ".qt", ".mpg", ".mpeg", ".3gp"],
    "DOCUMENTS": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox", ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ".pptx"],
    "ARCHIVES": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ".dmg", ".rar", ".xar", ".zip"],
    "AUDIO": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ".msv", ".ogg", ".oga", ".raw", ".vox", ".wav", ".wma"],
    "PLAINTEXT": [".txt", ".in", ".out"],
    "PDF": [".pdf"],
    "PYTHON": [".py"],
    "XML": [".xml"],
    "EXE": [".exe"],
    "SHELL": [".sh"]
}

# 2. สร้าง mapping: extension -> โฟลเดอร์
FILE_FORMATS = {
    file_format: directory
    for directory, file_formats in DIRECTORIES.items()
    for file_format in file_formats
}

def organise_folder():
    # 3. สแกนไฟล์ในโฟลเดอร์ปัจจุบัน
    for entry in os.scandir():
        if entry.is_dir():
            continue  # ข้ามโฟลเดอร์
        
        file_path = Path(entry)
        file_format = file_path.suffix.lower()
        
        # 4. ถ้ามีใน mapping -> ย้ายไปโฟลเดอร์ที่ตรงกัน
        if file_format in FILE_FORMATS:
            directory_path = Path(FILE_FORMATS[file_format])
            directory_path.mkdir(exist_ok=True)  # สร้างโฟลเดอร์ถ้ายังไม่มี
            file_path.rename(directory_path.joinpath(file_path))
    
    # 5. จัดการไฟล์ที่ไม่ตรงกับ mapping ไปโฟลเดอร์ OTHER-FILES
    try:
        os.mkdir("OTHER-FILES")
    except FileExistsError:
        pass
    
    for entry in os.scandir():
        try:
            if entry.is_dir():
                # ลบโฟลเดอร์ว่าง
                os.rmdir(entry)
            else:
                # ย้ายไฟล์อื่นๆ ไป OTHER-FILES
                src = Path.cwd() / entry.name
                dst = Path.cwd() / "OTHER-FILES" / entry.name
                src.rename(dst)
        except Exception:
            pass

if __name__ == "__main__":
    organise_folder()

วิธีใช้งาน

  1. บันทึกโค้ดเป็น organize.py
  2. วางไฟล์ในโฟลเดอร์ที่ต้องการจัด (เช่น Downloads)
  3. รัน: python organize.py
  4. ไฟล์จะถูกจัดกลุ่มอัตโนมัติ

การทำงานแบบทีละขั้นตอน

ขั้นตอน คำอธิบาย
1. Define DIRECTORIESกำหนด extension ให้แต่ละ category
2. Build FILE_FORMATSสร้าง dict map extension → folder name
3. Scan filesos.scandir() อ่านไฟล์ใน current directory
4. Move known typesย้ายไฟล์ไปโฟลเดอร์ตาม category สร้างโฟลเดอร์ถ้ายังไม่มี
5. Handle unknownไฟล์ที่ไม่มีใน mapping → ย้ายไป OTHER-FILES
6. Clean empty dirsลบโฟลเดอร์ว่างที่เหลืออยู่

ปรับแต่งได้ตามต้องการ

  • เพิ่ม/ลบ extension ใน DIRECTORIES
  • เปลี่ยนชื่อโฟลเดอร์ภาษาไทยได้ (ต้องเซฟไฟล์เป็น UTF-8)
  • เพิ่ม logging หรือ progress bar สำหรับโฟลเดอร์ใหญ่

⚠️ ข้อควรระวัง

  • Backup ก่อนรัน - โปรแกรมย้ายไฟล์จริง ไม่ใช่ simulate
  • รันในโฟลเดอร์ที่ถูกต้อง (current working directory)
  • ไฟล์ที่มีชื่อซ้ำในโฟลเดอร์ปลายทางอาจถูก overwrite