สคริปต์ 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()
วิธีใช้งาน
- บันทึกโค้ดเป็น
organize.py - วางไฟล์ในโฟลเดอร์ที่ต้องการจัด (เช่น
Downloads) - รัน:
python organize.py - ไฟล์จะถูกจัดกลุ่มอัตโนมัติ
การทำงานแบบทีละขั้นตอน
| ขั้นตอน | คำอธิบาย |
|---|---|
| 1. Define DIRECTORIES | กำหนด extension ให้แต่ละ category |
| 2. Build FILE_FORMATS | สร้าง dict map extension → folder name |
| 3. Scan files | os.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