Tự động hóa file và thư mục bằng Python với AI

Xây dựng các script Python để sắp xếp file vào thư mục, đổi tên file hàng loạt, tạo bản sao lưu tự động và giám sát những thư mục để phát hiện thay đổi — tất cả đều với sự hỗ trợ của AI.

🔄 Tóm tắt bài học: Trong bài học trước, bạn đã học được lý do tại sao Python lý tưởng cho tự động hóa và cách AI tạo ra các script từ mô tả ngôn ngữ tự nhiên. Bây giờ, hãy xây dựng tự động hóa thực tế đầu tiên của bạn — sắp xếp và quản lý file.

Quản lý file là điểm khởi đầu tự động hóa phổ biến nhất vì kết quả hiển thị ngay lập tức, rủi ro thấp (bạn luôn có thể di chuyển file trở lại) và ai cũng có một thư mục Downloads lộn xộn.

Script 1: Trình sắp xếp file theo loại

Prompt AI:

Viết một script Python sử dụng pathlib để sắp xếp các file trong một thư mục được chỉ định thành những thư mục con theo loại file. Quy tắc: (1) Hình ảnh (.jpg, .png, .gif, .webp, .svg) → "Images/", (2) Tài liệu (.pdf, .docx, .xlsx, .pptx, .txt) → "Documents/", (3) Video (.mp4, .mov, .avi, .mkv) → "Videos/", (4) File lưu trữ (.zip, .tar, .gz, .rar) → "Archives/", (5) Mọi thứ khác → "Other/". Bao gồm: chế độ chạy thử, ghi nhật ký CSV, bỏ qua các file ẩn, xử lý tên file trùng lặp bằng cách thêm _1, _2, v.v. Sử dụng argparse cho các đối số dòng lệnh.

Các thao tác pathlib chính để tự động hóa file:

Hoạt động Code pathlib Chức năng của nó
Liệt kê các file Path(folder).iterdir() Lặp lại qua tất cả các mục
Lọc theo loại Path(folder).glob("*.pdf") Tìm các file phù hợp với một mẫu nhất định
Lấy phần mở rộng path.suffix Trả lại .pdf, .jpg, v.v.
Lấy tên file path.stem Filename không có phần mở rộng
Di chuyển file path.rename(new_path) Di chuyển hoặc đổi tên
Tạo thư mục path.mkdir(parents=True, exist_ok=True) Tạo thư mục lồng nhau một cách an toàn
Kiểm tra sự tồn tại path.exists() Kiểm tra xem file/thư mục có tồn tại hay không

Script 2: Đổi tên hàng loạt file

Prompt AI:

Viết một script Python để đổi tên hàng loạt file. Hỗ trợ các mẫu đổi tên sau: (1) Thêm tiền tố ngày tháng từ siêu dữ liệu file: IMG_1234.jpg → 2026-01-15_IMG_1234.jpg, (2) Thay thế văn bản trong tên file: "Screenshot_" → "screen-", (3) Đánh số thứ tự: photo.jpg → vacation_001.jpg. Bao gồm: chế độ xem trước (hiển thị file cũ → file mới mà không đổi tên), khả năng hoàn tác (lưu file ánh xạ để đảo ngược thao tác), bỏ qua các file đã khớp với mẫu. Chấp nhận đường dẫn thư mục và mẫu dưới dạng đối số dòng lệnh.

Mẫu xem trước-sau đó thực thi:

📍 Nơi dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.

📋 Cách sao chép prompt này: Nhấp vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.

# This pattern applies to ALL destructive automation
changes = []
for file in folder.glob("*"):
    new_name = generate_new_name(file)
    changes.append((file, new_name))

# Preview
for old, new in changes:
    print(f"  {old.name} → {new.name}")

# Confirm
if input("Proceed? (y/n): ").lower() == "y":
    for old, new in changes:
        old.rename(new)

 

✏️ ​​Cách điền thông tin chi tiết của bạn: Thay thế mỗi [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin đầu vào mơ hồ sẽ tạo ra kết quả đầu ra mơ hồ — hãy cụ thể.

👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa vào prompt ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.

📌 Nên làm gì với kết quả: Lưu phản hồi vào một file Notes. Chọn gợi ý có hiệu quả cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm tất cả cùng một lúc.

⚠️ Nếu kết quả không ổn: Nếu các gợi ý có vẻ chung chung, hãy dán nội dung sau: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ qua những lời khuyên chung chung." Nếu nó bỏ qua các chi tiết quan trọng bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với điều đó làm ràng buộc chính."

Script 3: Sao lưu tự động

Prompt AI:

Viết một script Python để sao lưu một thư mục được chỉ định vào một thư mục đích có định dạng: backup_YYYY-MM-DD_HHMMSS/. Bao gồm: (1) Chỉ sao chép các file đã được sửa đổi kể từ lần sao lưu cuối cùng (sao lưu tăng dần), (2) Bỏ qua các file khớp với các mẫu trong file .backupignore (như .gitignore), (3) In tóm tắt: các file đã sao chép, tổng kích thước, thời gian đã trôi qua, (4) Tùy chọn nén bản sao lưu thành file .zip. Sử dụng shutil cho các thao tác file và argparse cho những đối số dòng lệnh.

Các mẫu tự động hóa file thiết yếu

Mẫu Thời điểm sử dụng Ví dụ
Chế độ Dry-run Bất kỳ script nào sửa đổi file Xem trước những gì sẽ xảy ra trước khi thực thi
Ghi nhật ký Các script xử lý nhiều file File nhật ký CSV ghi lại mọi thao tác để khắc phục sự cố
Lỗi tiếp tục Thao tác hàng loạt try/except mỗi file, đừng dừng lại khi chỉ gặp một lỗi
Xử lý trùng lặp Di chuyển/sao chép file Thêm _1, _2 hoặc dấu thời gian để tránh ghi đè
Khả năng hoàn tác Đổi tên các thao tác Lưu lại ánh xạ cũ→mới để sử dụng cho thao tác đảo ngược

Kiểm tra nhanh: Script của bạn cần xử lý một file có tên là my résumé (final).pdf — hãy chú ý đến dấu nhấn, khoảng trắng và dấu ngoặc đơn. Thư viện pathlib có xử lý đúng cách không?

Câu trả lời: Có, pathlib xử lý các ký tự Unicode, khoảng trắng và ký tự đặc biệt một cách chính xác trên tất cả mọi hệ điều hành. Lỗi thường gặp là sử dụng phép nối chuỗi thay vì toán tử / của pathlib: Path(folder) / filename xử lý các ký tự đặc biệt một cách an toàn, trong khi phép nối chuỗi f-string có thể không thoát đúng cách trên tất cả mọi nền tảng.

Bài tập thực hành

  1. Dễ: Viết một script tìm tất cả các file lớn hơn 100MB trong một thư mục và liệt kê chúng được sắp xếp theo kích thước
  2. Trung bình: Viết một script giám sát một thư mục và tự động sắp xếp các file mới khi chúng xuất hiện (sử dụng time.sleep() để kiểm tra mỗi 5 giây)
  3. Thử thách: Viết một script tìm các file trùng lặp bằng cách so sánh file hash (không chỉ tên) và di chuyển những file trùng lặp vào thư mục "Duplicates"

Prompt AI cho bất kỳ bài tập nào:

Viết một script Python để [MÔ TẢ NHIỆM VỤ]. Sử dụng pathlib cho các thao tác file. Bao gồm: xử lý lỗi cho từng file, tóm tắt những gì đã thực hiện và chế độ chạy thử. Cho phép chạy script từ dòng lệnh bằng argparse.

Những điểm chính cần ghi nhớ

  • Luôn bao gồm chế độ chạy thử trong các script tự động hóa file — xem trước những gì sẽ xảy ra trước khi thực thi sẽ bảo vệ bạn khỏi mất dữ liệu ngoài ý muốn và cho phép bạn xác minh hành vi của script trong các trường hợp ngoại lệ như tên file trùng lặp, ký tự đặc biệt và file không có phần mở rộng.
  • Sử dụng pathlib (không phải os.path) cho các thao tác file hiện đại, dễ đọc — nó coi đường dẫn là đối tượng, tự động xử lý khả năng tương thích đa nền tảng và tạo ra code dễ đọc như tiếng Anh (path.suffix, path.stem, path.parent).
  • Kiểm tra các script file trên một bản sao nhỏ trước khi chạy trên dữ liệu thực — 20 file thử nghiệm sẽ không tiết lộ những trường hợp ngoại lệ ẩn trong 3.000 file thực, vì vậy hãy tiến hành qua chế độ chạy thử → kiểm tra trên bản sao → thực thi thực để phát hiện sự cố một cách an toàn.
  • Câu 1:

    Script sắp xếp file của bạn hoạt động hoàn hảo trên thư mục thử nghiệm gồm 20 file. Bây giờ bạn sắp chạy nó trên thư mục Downloads thực tế của mình với 3.000 file. Bạn nên làm gì trước tiên?

    GIẢI THÍCH:

    Kiểm thử ở quy mô lớn khác với kiểm thử trên một mẫu nhỏ. Các trường hợp ngoại lệ ẩn trong các tập dữ liệu lớn: tên file trùng lặp, ký tự đặc biệt, file không có phần mở rộng và đường dẫn cực dài. Quy trình chạy thử → sao chép thử nghiệm → chạy thực tế sẽ phát hiện những vấn đề này một cách an toàn. Sao lưu cũng là một biện pháp tốt, nhưng chúng không giúp bạn tìm ra lỗi trước khi chúng xảy ra.

  • Câu 2:

    Bạn muốn đổi tên 200 ảnh từ định dạng 'IMG_1234.jpg' thành '2026-01-15_vacation_001.jpg'. Bạn yêu cầu AI viết script. Nó sử dụng os.path để thao tác đường dẫn. Đồng nghiệp của bạn nói rằng bạn nên sử dụng pathlib thay thế. Ai đúng?

    GIẢI THÍCH:

    pathlib (có sẵn từ Python 3.6) là tiêu chuẩn hiện đại cho các thao tác đường dẫn file. Nó dễ đọc hơn, mang tính Python hơn và xử lý khả năng tương thích đa nền tảng tốt hơn os.path. Khi làm việc với AI, việc chỉ định 'sử dụng pathlib' trong prompt của bạn đảm bảo bạn nhận được code hiện đại, dễ bảo trì. Hầu hết các hướng dẫn tự động hóa Python và những thực tiễn tốt nhất hiện nay đều khuyên dùng pathlib hơn os.path.

  • Câu 3:

    Bạn đang viết một script để sắp xếp 5.000 file trong thư mục Downloads của mình. Bạn sử dụng os.rename() để di chuyển các file vào những thư mục con theo loại. Script bị lỗi giữa chừng sau khi di chuyển 2.300 file. Bây giờ thư mục Downloads của bạn trở nên lộn xộn — một số file đã được di chuyển, một số thì không. Làm thế nào để ngăn chặn điều này?

    GIẢI THÍCH:

    Khả năng chống lỗi là điều cần thiết cho các script tự động hóa xử lý nhiều file. Ba phương pháp thực hành giúp ngăn ngừa sự cố cục bộ: (1) sử dụng try/except xung quanh mỗi thao tác để một lỗi không làm dừng toàn bộ script, (2) ghi nhật ký mọi hành động để bạn có thể xem điều gì đã xảy ra, và (3) chế độ chạy thử để bạn có thể xác minh kế hoạch trước khi thực thi. Các mẫu này áp dụng cho mọi script tự động hóa, không chỉ những thao tác với file.

Thứ Ba, 09/06/2026 11:37
51 👨 63
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo