Thứ Sáu, 18 tháng 9, 2026

Python và Automation (Tai sao lại tự "làm khổ" bản thân, lặp đi lặp lại 100 lần một việc nếu có thể bảo Python làm thay.)

Ngày nay, nếu mở bất cứ tờ báo nào: Tuổi Trẻ, Thanh Niên, Lao Động, VietNamNet...xác suất bạn thấy những câu chữ như "Robot", "AI", "Tự động hóa"...là rất cao. Đó là nói tương đối "khiêm tốn", còn nói "toẹt ra" nói theo phong cách "hiên ngang" thì chắc chắn bạn sẽ được bao phủ bởi "hơi thở của thời đại tự động hóa, AI và robot"...Dù có chui vào một cái "hóc" nào bạn cũng không thể...thoát được!!

Có một câu hỏi "đơn giản dị" rất đáng hỏi khi bạn bắt đầu biết lập trình:

"Ủa... mình học code để làm gì?"

Nếu câu trả lời là:

"Để viết chương trình."

...thì đúng.

Nhưng vẫn hơi thiếu.

Một trong những cái "đã" nhất khi biết lập trình là bạn bắt đầu nhìn những công việc mình làm hàng ngày và tự hỏi:

"Cái này có thể bắt máy tính làm thay không?"

Ví dụ:

  • Đổi tên 500 file.
  • Đổi tên 1.000 tấm ảnh.
  • Đọc một file CSV.
  • Lọc những dòng cần thiết.
  • Tải một loạt file.
  • Lấy dữ liệu từ website.
  • Đổi định dạng dữ liệu.
  • Tạo báo cáo.
  • Gửi email.
  • Chạy một quy trình theo lịch.

Nếu trước đây bạn nghĩ:

"Thôi, ngồi làm tay cũng được, vẽ chuyện ra làm gì cho phức tạp."

thì sau khi biết Python, trong đầu chúng ta bắt đầu có một thói quen "hơi bị" nguy hiểm:

"Khoan... hình như cái này cho Python làm được." 😂

Đó chính là lúc Automation bước vào.


Automation là gì?

Nói thật đơn giản:

Automation là dùng máy tính hoặc phần mềm để tự động thực hiện một công việc hoặc một chuỗi công việc mà trước đây con người phải làm thủ công.

Ví dụ bạn có:

100 file ảnh

Công việc thủ công:

Mở thư mục
↓
Chọn file
↓
Đổi tên
↓
Chọn file tiếp
↓
Đổi tên
↓
Lặp lại 100 lần

Automation:

Python
↓
Đọc danh sách file
↓
Đổi tên theo quy tắc
↓
Xong

Bạn uống cà phê.

Python làm việc.

Nghe cũng hợp lý. ☕😂


Automation không phải là một "ngôn ngữ lập trình"

Đây là điểm cần hiểu ngay từ đầu.

Automation không phải:

ngôn ngữ Python

hay:

thư viện Automation

Nó là cách sử dụng công nghệ để tự động hóa công việc.

Python chỉ là một trong những công cụ rất tiện để làm việc đó.

Có thể dùng:

  • Python
  • JavaScript
  • PowerShell
  • Bash
  • các công cụ workflow
  • phần mềm RPA
  • API
  • cron/task scheduler
  • nhiều công cụ khác

Nhưng trong lúc này, trong lúc chúng ta còn mới "lơ ngơ" mới nghe nói tới khái niệm rất chi là "hàn lâm" đó là Tự động hóa... chúng ta sẽ dùng Python vì Python khá dễ tiếp cận và có rất nhiều thư viện hỗ trợ.


Một ví dụ cực kỳ đời thường

Giả sử mỗi sáng bạn phải làm:

1. Mở website
2. Lấy dữ liệu
3. Copy dữ liệu
4. Mở Excel
5. Dán dữ liệu
6. Lọc dữ liệu
7. Đổi tên file
8. Lưu file
9. Gửi email

Ngày đầu:

"Không sao."

Ngày thứ 10:

"Hơi mệt."

Ngày thứ 100:

"Tại sao mình lại làm cái việc "chán ngấy" này vậy?" 😭

Nếu quy trình có cấu trúc rõ ràng và các công cụ/website cho phép tự động truy cập, bạn có thể biến thành:

Python
  ↓
Lấy dữ liệu
  ↓
Xử lý
  ↓
Lưu file
  ↓
Gửi email

Chúng ta chỉ cần kiểm tra kết quả.

Đó là Automation.


Automation khác với chạy một đoạn code như thế nào?

Ví dụ bạn viết:

print("Hello")

Đây chỉ là một chương trình rất đơn giản.

Bạn chạy:

Python
↓
Hello

Xong.

Nhưng Automation thường có dạng:

Lấy dữ liệu
↓
Kiểm tra
↓
Xử lý
↓
Lưu
↓
Gửi
↓
Lặp lại

Nó giống như bạn xây một dây chuyền làm việc.

Ví dụ:

Bước 1 → Bước 2 → Bước 3 → Bước 4

Máy tính cứ chạy theo quy trình.


Automation bắt đầu từ một câu hỏi rất đơn giản

Khi gặp một công việc, hãy hỏi:

"Mình đang làm việc này vì máy tính chưa biết cách làm, hay vì mình chưa viết cho nó cách làm?"

Ví dụ:

Bạn có 500 file:

IMG_001.jpg
IMG_002.jpg
IMG_003.jpg
...

Bạn đổi tên bằng tay.

Nhưng máy tính hoàn toàn có thể làm.

Vậy vấn đề không phải:

"Máy tính không làm được."

Mà là:

"Chưa có chương trình bảo nó làm."

Đây là một thay đổi tư duy rất quan trọng.


Bài trước chính là Automation phiên bản mini, hay phiên bản "đơn giản dị"

Bạn còn nhớ:

Bài: Đổi tên file hàng loạt bằng Python

và:

Bài:  Đổi tên ảnh bằng Python

không?

Thật ra đó đã là Automation rồi.

Ví dụ:

for i in range(1, 501):
    ...

Bạn nói:

"Làm việc này với 500 file."

Python nói:

"OK sếp, sẽ làm ngay!."

Bạn không cần ngồi:

F2
Enter
F2
Enter
F2
Enter
...

Python không có cảm xúc.

Nên nó không thấy chán., chỉ biết "răm rắp" tuân lệnh mà thôi 😂


Automation = quy trình + quy tắc

Đây là một cách nhớ khá dễ:

Automation cần một quy trình rõ ràng và những quy tắc mà máy tính có thể thực hiện.

Ví dụ:

Nếu file là JPG
→ đổi tên thành product_001.jpg

Nếu file là PNG
→ giữ nguyên đuôi PNG

Nếu file đã tồn tại
→ bỏ qua

Nếu file không phải ảnh
→ không làm gì

Đó chính là các rules.

Con người đưa ra luật.

Python thực hiện luật.


Ví dụ: tự động xử lý file

Giả sử bạn có:

downloads/
├── report.pdf
├── IMG_001.jpg
├── IMG_002.jpg
├── photo.png
├── video.mp4
└── notes.txt

Bạn muốn:

"Chỉ lấy ảnh và đổi tên."

Python có thể:

import os

folder = "downloads"

extensions = (".jpg", ".jpeg", ".png", ".webp")

counter = 1

for file in os.listdir(folder):

    if file.lower().endswith(extensions):

        old_path = os.path.join(folder, file)

        new_name = f"image_{counter:03d}" + os.path.splitext(file)[1]

        new_path = os.path.join(folder, new_name)

        if not os.path.exists(new_path):
            os.rename(old_path, new_path)

        counter += 1

Nhìn lại, bạn sẽ thấy:

Lấy danh sách
↓
Lọc
↓
Xử lý
↓
Kiểm tra
↓
Thực hiện

Đây chính là một workflow Automation rất cơ bản.


Automation không nhất thiết phải "khủng"

Nhiều người nghe chữ Automation là tưởng tượng những thứ rất "hoành văn tráng":

Robot
AI
server
1000 API
50 database
hệ thống tự chạy 24/7

Không cần.

Automation có thể chỉ là:

"Mỗi thứ Sáu, đổi tên đống file này."

Hoặc:

"Mỗi khi có file CSV mới, lọc những dòng cần thiết."

Hoặc:

"Mở một thư mục, tìm file PDF và gom chúng vào một chỗ."

Chỉ cần máy tính làm thay một công việc lặp lại là đã có Automation.


Một ví dụ rất dễ hiểu: dọn thư mục Downloads

Bạn có một thư mục:

Downloads/

và bên trong:

abc.pdf
photo.jpg
invoice.pdf
video.mp4
image.png
report.pdf
music.mp3

Bạn muốn tự động:

PDF → Documents/
Ảnh → Images/
Video → Videos/
MP3 → Music/

Con người làm:

Kéo
Thả
Kéo
Thả
Kéo
Thả
...

Python có thể:

Đọc file
↓
Xác định extension
↓
Chọn thư mục
↓
Di chuyển file

Ví dụ:

import os
import shutil

source = "Downloads"

for file in os.listdir(source):

    old_path = os.path.join(source, file)

    if file.lower().endswith(".pdf"):

        new_path = os.path.join("Documents", file)

        shutil.move(old_path, new_path)

Ở đây có thêm:

shutil

Thư viện này có nhiều công cụ để sao chép và di chuyển file.


Đây mới là chỗ Python bắt đầu "đi làm"

Lúc đầu:

print("Hello")

Python đang học mẫu giáo. 😂

Sau đó:

os.rename(...)

Python bắt đầu biết làm việc với file.

Rồi:

csv.reader(...)

Python biết đọc dữ liệu.

Rồi:

requests.get(...)

Python biết đi lấy dữ liệu từ Internet.

Rồi:

BeautifulSoup(...)

Python biết tìm dữ liệu trong HTML.

Bây giờ chúng ta ghép lại:

File
+
Data
+
Internet
+
Logic
=
Automation

Lúc này Python bắt đầu có ích theo kiểu rất thực tế.


Web Scraping + Automation = combo khá mạnh

Bài #72 chúng ta vừa học Web Scraping.

Ví dụ Python có thể lấy:

Tên sản phẩm
Giá
Link

Nhưng nếu bạn chỉ chạy một lần thì:

Python
↓
Lấy dữ liệu
↓
In ra màn hình

Cũng được.

Automation đi thêm một bước:

Python
↓
Truy cập website
↓
Lấy dữ liệu
↓
Làm sạch
↓
Lưu CSV
↓
Tạo báo cáo

Thậm chí:

Mỗi ngày
↓
Chạy script
↓
Lấy dữ liệu mới
↓
Lưu lại

Đó mới là lúc Automation bắt đầu "có đất diễn".


Nhưng có một vấn đề: Python đâu biết khi nào phải chạy?

Đúng.

Nếu bạn viết:

print("Đã chạy")

thì Python không tự nhiên thức dậy lúc 8 giờ sáng rồi nói:

"Hôm nay tôi đi làm."

😂

Bạn cần một cơ chế để lập lịch hoặc kích hoạt chương trình.

Ví dụ trên Windows có:

Task Scheduler

Bạn có thể thiết lập:

Mỗi ngày 8:00
↓
Chạy Python script

Trên Linux/macOS có thể sử dụng các cơ chế như:

cron

Nhưng đó là bước tiếp theo.

Điều quan trọng lúc này là hiểu:

Automation không chỉ là viết code. Nó còn là làm cho quy trình được kích hoạt đúng lúc.


Automation có thể chạy theo sự kiện

Không nhất thiết phải:

8:00 sáng → chạy

Có thể là:

Có file mới
↓
Python xử lý

Hoặc:

Có dữ liệu mới
↓
Python chạy

Hoặc:

Người dùng gửi form
↓
Server nhận
↓
Python xử lý

Hoặc:

API có dữ liệu mới
↓
Chương trình lấy về

Đây gọi chung là tư duy event-driven.

Không cần nhớ thuật ngữ này ngay.

Chỉ cần hiểu:

Có chuyện xảy ra → chương trình phản ứng.


Một Automation tốt không phải là Automation "chạy thật nhanh"

Đây là chỗ người mới học rất dễ hiểu nhầm.

Ví dụ:

100 file

Python xử lý trong:

0.2 giây

Nghe rất ngầu.

Nhưng nếu nó đổi nhầm tên 100 file thì...

"Nhanh để làm gì?" 😭

Automation tốt cần:

Đúng
+
An toàn
+
Có kiểm tra
+
Có log
+
Có xử lý lỗi

Chứ không phải chỉ:

Nhanh!

Vì vậy Automation phải biết "nói không"

Ví dụ:

if not os.path.exists(old_path):
    print("Không tìm thấy file")
    continue

Hoặc:

if os.path.exists(new_path):
    print("Tên đã tồn tại")
    continue

Hoặc:

if response.status_code != 200:
    print("Không lấy được dữ liệu")

Những câu:

Nếu...
thì...
ngược lại...
bỏ qua...

chính là cách chúng ta dạy máy tính tự xử lý tình huống.


Log là gì?

Giả sử Automation chạy 5.000 file.

Bạn không muốn ngồi nhìn:

Done
Done
Done
Done
Done
...

Bạn cần biết:

Đã xử lý: 4.982
Bỏ qua: 15
Lỗi: 3

Đó là lúc log trở nên hữu ích.

Ví dụ đơn giản:

print("Đang xử lý:", file)

hoặc:

print("LỖI:", file)

Sau này có thể lưu log vào:

automation.log

để xem lại.

Một Automation mà chạy xong rồi bạn hỏi:

"Ủa, nó làm gì vậy?"

thì hơi khó sống. 😂


Automation phải có khả năng "chịu lỗi"

Đây là một khác biệt rất lớn giữa:

"Một đoạn script chạy được."

và:

"Một Automation có thể dùng thường xuyên."

Ví dụ có 100 file.

File thứ 57 bị lỗi.

Nếu chương trình chết luôn:

1
2
3
...
56
💥

thì 43 file còn lại chưa được xử lý.

Một cách tốt hơn là xử lý lỗi phù hợp:

try:
    # xử lý file
except Exception as e:
    print("Lỗi:", file, e)

Nhưng cũng đừng viết:

try:
    ...
except:
    pass

rồi tưởng rằng:

"Xong, không còn lỗi." 😎

Không.

Bạn chỉ vừa nói với Python:

"Có lỗi thì giả vờ như không thấy."

😂

Lỗi vẫn còn đó.

Chỉ là bạn không nhìn thấy nữa.


Automation và "con người trong vòng lặp"

Không phải cái gì cũng nên tự động 100%.

Ví dụ:

Python
↓
Phân tích dữ liệu
↓
Tìm thấy 20 trường hợp bất thường
↓
Con người kiểm tra
↓
Python tiếp tục xử lý

Đây là cách rất thực tế.

Máy làm phần:

lặp lại
tính toán
lọc
sắp xếp

Con người làm phần:

phán đoán
kiểm tra
quyết định

Đặc biệt với những công việc có hậu quả lớn, việc để con người kiểm tra trước khi hành động là rất quan trọng.


Một Automation hoàn chỉnh có thể trông như thế này

Hãy tưởng tượng bạn có một quy trình:

08:00
  ↓
Python chạy
  ↓
Lấy dữ liệu website
  ↓
Kiểm tra dữ liệu
  ↓
Lọc dữ liệu
  ↓
Lưu CSV
  ↓
Đổi tên file
  ↓
Tạo báo cáo
  ↓
Lưu log
  ↓
Thông báo hoàn thành

Đây không còn là:

"Một đoạn Python."

Mà là:

Một quy trình tự động.

Và đây chính là tư duy mà chúng ta muốn hướng tới.


Automation trong công việc thực tế

Ví dụ một cửa hàng có thể cần:

Đơn hàng
↓
Lấy dữ liệu
↓
Kiểm tra
↓
Tạo file
↓
Lưu
↓
Gửi thông báo

Một nhóm marketing:

Dữ liệu
↓
Tổng hợp
↓
Lọc
↓
Tạo báo cáo

Một developer:

File mới
↓
Kiểm tra
↓
Đổi tên
↓
Di chuyển
↓
Backup

Một người làm dữ liệu:

CSV
↓
Làm sạch
↓
Phân tích
↓
Xuất báo cáo

Một website:

Form
↓
Nhận dữ liệu
↓
Validate
↓
Lưu database
↓
Gửi email

Không phải tất cả đều cần Python.

Nhưng Python có thể là một mảnh ghép rất hữu ích.


"Nếu Automation tốt vậy thì sau này ai làm việc?"

Đây là một câu hỏi rất thú vị và rất "thời đại" tức là "Nỗi lo của nhân loại".

Và cũng là một câu hỏi chúng ta sẽ gặp lại ở:

Bài sau: AI có thay thế programmer?

Nhưng ngay từ bây giờ có một điều đáng nhớ:

Automation chủ yếu thay thế hoặc giảm bớt những phần việc lặp lại, chứ không phải cứ có Automation là cả công việc biến mất.

Ví dụ:

Nhập dữ liệu 500 lần

có thể tự động hóa.

Nhưng:

Nên nhập dữ liệu nào?
Dữ liệu có ý nghĩa gì?
Nếu dữ liệu sai thì sao?
Kết quả dùng để quyết định điều gì?

vẫn cần con người.

Vì vậy học Automation không chỉ là học cách "để máy làm thay".

Nó còn là học cách:

Nhìn một công việc và tách nó thành những bước mà máy có thể thực hiện.

Đó là kỹ năng rất đáng giá.


Chua thêm: Căn bệnh "Thôi làm tay cho nhanh" 😂

Đây là một căn bệnh rất phổ biến của người mới học lập trình.

Bạn có 10 file.

Bạn nói:

"Thôi, đổi tay cho nhanh."

Đúng.

Bạn có 20 file:

"Cũng được."

Bạn có 50:

"Hơi mệt."

Bạn có 500:

"Python đâu rồi?"

😂

Nhưng có một cái bẫy ngược lại.

Bạn có 3 file.

Bạn ngồi viết:

200 dòng code

để tự động hóa.

Rồi mất 4 tiếng debug.

Trong khi đổi tay mất 30 giây.

😂

Vậy Automation không phải:

"Cái gì cũng phải tự động."

Mà là:

"Tự động hóa khi chi phí xây Automation hợp lý hơn chi phí làm thủ công."

Đây là một nguyên tắc cực kỳ đời thường nhưng rất quan trọng.


Khi nào nên Automation?

Bạn có thể cân nhắc tự động hóa khi công việc:

Lặp lại nhiều lần

100
500
1.000 lần

Có quy tắc rõ ràng

Ví dụ:

Nếu JPG → đổi tên
Nếu PDF → chuyển thư mục
Nếu lỗi → ghi log

Tốn thời gian

Bạn mất:

2 giờ mỗi tuần

thì vài giờ viết script có thể đáng.

Dễ gây lỗi do thao tác tay

Con người rất dễ:

copy nhầm
paste nhầm
đổi nhầm tên
bỏ sót

Máy cũng có thể sai.

Nhưng nếu quy tắc rõ ràng, máy có thể làm rất đều.


Khi nào không nên vội Automation?

Nếu:

Chỉ làm 2 lần

và:

Mất 30 giây

thì có thể không cần.

Hoặc công việc:

Thay đổi liên tục
Không có quy tắc
Cần phán đoán nhiều

thì Automation hoàn toàn có thể không đáng công.

Đừng thấy Python rồi việc gì cũng:

"Để code."

😂

Có những lúc:

F2 nhanh hơn viết 50 dòng Python.

Và chấp nhận điều đó cũng là kỹ năng.


Checklist trước khi tự động hóa một công việc

Trước khi code, hãy viết quy trình ra giấy:

Bước 1:
Bước 2:
Bước 3:
Bước 4:

Sau đó hỏi:

☑ Bước nào lặp lại?

☑ Bước nào có quy tắc?

☑ Bước nào máy làm được?

☑ Dữ liệu đầu vào là gì?

☑ Kết quả đầu ra là gì?

☑ Nếu dữ liệu sai thì sao?

☑ Nếu file không tồn tại thì sao?

☑ Nếu mạng mất thì sao?

☑ Nếu API trả lỗi thì sao?

☑ Nếu tên file bị trùng thì sao?

☑ Có cần log không?

☑ Có cần backup không?

☑ Có cần con người kiểm tra trước bước cuối không?

Nếu bạn trả lời được những câu này, việc viết code sẽ dễ hơn rất nhiều.


Một công thức rất dễ nhớ

Bạn có thể nhớ Automation theo công thức:

INPUT
  ↓
PROCESS
  ↓
OUTPUT

Ví dụ:

CSV
 ↓
Lọc dữ liệu
 ↓
CSV mới

Hoặc:

Website
 ↓
Scraping
 ↓
CSV

Hoặc:

Folder
 ↓
Tìm ảnh
 ↓
Đổi tên

Hoặc:

File mới
 ↓
Kiểm tra
 ↓
Di chuyển

Khi quy trình phức tạp hơn:

INPUT
 ↓
VALIDATE
 ↓
PROCESS
 ↓
CHECK
 ↓
OUTPUT
 ↓
LOG

Đây là một khung tư duy rất hữu ích.


Tổng kết

Nếu phải giải thích Automation bằng một câu:

Automation là biến một công việc lặp lại thành một quy trình mà máy tính có thể tự thực hiện theo những quy tắc mình đặt ra.

Python có thể giúp bạn làm rất nhiều việc:

Đọc file
↓
Đổi tên file
↓
Xử lý ảnh
↓
Đọc CSV
↓
Lấy dữ liệu web
↓
Lưu dữ liệu
↓
Gửi email
↓
Tạo báo cáo

Và khi ghép chúng lại:

Python
+
Logic
+
File
+
Data
+
Internet
=
Automation

Nhưng đừng quên:

Automation tốt không phải là Automation nhiều nhất.

Mà là:

Automation đúng chỗ, đúng quy trình, có kiểm tra và không biến một việc 5 phút thành một project 5 ngày. 😂


Bạn có thể cũng đang gặp...

Nếu muốn đi lại những viên gạch trước khi bước tiếp, bạn có thể xem:

  • Đọc CSV bằng Python 📊
  • Đổi tên file hàng loạt bằng Python 📁
  • Đổi tên ảnh bằng Python 📸
  • Web Scraping là gì? 🌐
  • requirements.txt là gì? 📦
  • Virtual Environment – Tại sao Python Developer lại thích tạo môi trường ảo?

Nhìn riêng từng bài thì khá nhỏ.

Nhưng ghép lại:

CSV
 ↓
File
 ↓
Image
 ↓
Web
 ↓
Automation

thì bắt đầu thành một bộ công cụ khá thực tế.