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 ảnhCô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ầnAutomation:
Python
↓
Đọc danh sách file
↓
Đổi tên theo quy tắc
↓
XongBạ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ữ Pythonhay:
thư viện AutomationNó 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 emailNgà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 emailChú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
↓
HelloXong.
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ạiNó 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 4Má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.txtBạ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 += 1Nhì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/7Khô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.mp3Bạ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 fileVí 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:
shutilThư 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
=
AutomationLú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á
LinkNhưng nếu bạn chỉ chạy một lần thì:
Python
↓
Lấy dữ liệu
↓
In ra màn hìnhCũ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áoThậ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 scriptTrên Linux/macOS có thể sử dụng các cơ chế như:
cronNhư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ạyCó thể là:
Có file mới
↓
Python xử lýHoặc:
Có dữ liệu mới
↓
Python chạyHoặ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 filePython xử lý trong:
0.2 giâyNghe 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ỗiChứ 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")
continueHoặc:
if os.path.exists(new_path):
print("Tên đã tồn tại")
continueHoặ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:
passrồ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ếpCon 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áoMột nhóm marketing:
Dữ liệu
↓
Tổng hợp
↓
Lọc
↓
Tạo báo cáoMột developer:
File mới
↓
Kiểm tra
↓
Đổi tên
↓
Di chuyển
↓
BackupMột người làm dữ liệu:
CSV
↓
Làm sạch
↓
Phân tích
↓
Xuất báo cáoMột website:
Form
↓
Nhận dữ liệu
↓
Validate
↓
Lưu database
↓
Gửi emailKhô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ầncó 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ầnCó 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 logTốn thời gian
Bạn mất:
2 giờ mỗi tuầnthì 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ótMá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ầnvà:
Mất 30 giâythì 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ềuthì 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
↓
OUTPUTVí dụ:
CSV
↓
Lọc dữ liệu
↓
CSV mớiHoặc:
Website
↓
Scraping
↓
CSVHoặc:
Folder
↓
Tìm ảnh
↓
Đổi tênHoặc:
File mới
↓
Kiểm tra
↓
Di chuyểnKhi 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áoVà khi ghép chúng lại:
Python
+
Logic
+
File
+
Data
+
Internet
=
AutomationNhư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
↓
Automationthì bắt đầu thành một bộ công cụ khá thực tế.