0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Tự động tổ chức tệp tin với Python đơn giản

Đăng vào 5 giờ trước

• 4 phút đọc

Chủ đề:

KungFuTech

📂 Tự động tổ chức tệp tin với Python 🚀

Quản lý một thư mục Tải về lộn xộn là một thử thách mà tất cả chúng ta đều phải đối mặt. Hình ảnh, tài liệu, video, và các tệp tin ngẫu nhiên tích tụ nhanh chóng, khiến việc tìm kiếm những gì bạn cần trở nên khó khăn. Đó là lúc tự động hóa bằng Python phát huy tác dụng!

Trong bài viết này, tôi sẽ hướng dẫn bạn cách tôi xây dựng một kịch bản tổ chức tệp tin bằng Python tự động phân loại các tệp tin thành các thư mục con như Hình ảnh, Tài liệu, Video, Âm thanh, Tệp lưu trữ, Cấu hình, và nhiều hơn nữa.


📌 Đặt vấn đề

Tạo một kịch bản Python tự động tổ chức các tệp tin trong một thư mục theo loại tệp — đưa hình ảnh, tài liệu, video, v.v. vào các thư mục con riêng biệt.


🚀 Tính năng của kịch bản

  • ✅ Tự động phát hiện loại tệp qua phần mở rộng
  • ✅ Tạo thư mục con nếu chúng chưa tồn tại
  • ✅ Di chuyển các tệp tin vào thư mục tương ứng
  • ✅ In nhật ký để xác nhận (tệp đã di chuyển / bị bỏ qua)
  • ✅ Dễ dàng tùy chỉnh với các phần mở rộng mới

🛠️ Các loại tệp được hỗ trợ

  • Hình ảnh.jpg, .jpeg, .png, .gif
  • Tài liệu.pdf, .docx, .txt, .xlsx, .pptx
  • Video.mp4, .avi, .mkv
  • Âm thanh.mp3, .wav
  • Tệp lưu trữ.zip, .rar
  • Kịch bản.py, .js, .md
  • Cấu hình.ini
  • Ứng dụng.exe

📜 Mã Python

Dưới đây là mã kịch bản hoàn chỉnh:

python Copy
import os
import shutil

def organize_folder(folder_path):
    # Định nghĩa các loại tệp
    file_types = {
        'Hình ảnh': ['.jpg', '.jpeg', '.png', '.gif'],
        'Tài liệu': ['.pdf', '.docx', '.txt', '.xlsx', '.pptx'],
        'Video': ['.mp4', '.avi', '.mkv'],
        'Âm thanh': ['.mp3', '.wav'],
        'Tệp lưu trữ': ['.zip', '.rar'],
        'Kịch bản': ['.py', '.js', '.md'],
        'Cấu hình': ['.ini'],
        'Ứng dụng': ['.exe']
    }

    print(f"📂 Đang tổ chức các tệp trong: {folder_path}\n")

    files_moved = 0

    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)

        if os.path.isfile(file_path):
            _, ext = os.path.splitext(filename)
            moved = False

            for folder, extensions in file_types.items():
                if ext.lower() in extensions:
                    target_folder = os.path.join(folder_path, folder)
                    os.makedirs(target_folder, exist_ok=True)
                    shutil.move(file_path, os.path.join(target_folder, filename))
                    print(f"✅ Đã di chuyển: {filename} → {folder}/")
                    files_moved += 1
                    moved = True
                    break

            if not moved:
                print(f"⚠️ Bỏ qua (Loại không xác định): {filename}")

    print(f"\n✨ Hoàn tất! Tổng số tệp đã di chuyển: {files_moved}")

# Chạy kịch bản
organize_folder(r"C:\\Users\\imran\\Downloads")

📸 Ví dụ đầu ra

Copy
📂 Đang tổ chức các tệp trong: C:\Users\imran\Downloads

✅ Đã di chuyển: photo.jpg → Hình ảnh/
✅ Đã di chuyển: resume.docx → Tài liệu/
✅ Đã di chuyển: movie.mp4 → Video/
⚠️ Bỏ qua (Loại không xác định): setup.tmp

✨ Hoàn tất! Tổng số tệp đã di chuyển: 5

🎯 Tại sao kịch bản này hữu ích?

  • Giữ cho thư mục Tải về của bạn gọn gàng và ngăn nắp
  • Tiết kiệm thời gian tìm kiếm tệp
  • Tăng năng suất với tự động hóa
  • Hoạt động trên Windows, Mac và Linux

🔮 Cải tiến tương lai

  • Thêm một thư mục Khác cho các loại tệp không xác định
  • Lập lịch kịch bản với Task Scheduler (Windows) hoặc Cron Jobs (Linux/Mac)
  • Thêm giao diện GUI cho người dùng không chuyên

🙌 Những suy nghĩ cuối cùng

Dự án này là một ví dụ đơn giản nhưng mạnh mẽ về cách tự động hóa bằng Python có thể đơn giản hóa các tác vụ hàng ngày. Chỉ với một vài dòng mã, bạn có thể biến một thư mục lộn xộn thành một thư mục được tổ chức tốt.

💡 Nếu bạn muốn thử nghiệm, hãy kiểm tra repo GitHub tại đây 👉 python-file-organizer-automation


✍️ Tác giả: Imran Ahmad

🚀 Đam mê tự động hóa Python, Selenium, và lập trình kịch bản để tăng năng suất.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào