Các Ứng Dụng Thực Tế Của Python Trong Tự Động Hóa, Phân Tích Dữ Liệu Và Phát Triển Web

Tự Động Hóa Công Việc Văn Phòng

Python là công cụ mạnh mẽ để xử lý các tác vụ lặp đi lặp lại trong môi trường văn phòng. Dưới đây là một số ví dụ điển hình với mã nguồn được viết lại hoàn toàn — tối ưu hóa cấu trúc, cải thiện tính rõ ràng và tuân thủ các nguyên tắc lập trình hiện đại:

Trích xuất số điện thoại từ nhiều tệp văn bản

import re
from pathlib import Path

def extract_phone_numbers(file_path: Path) -> list:
    content = file_path.read_text(encoding="utf-8")
    # Hỗ trợ các định dạng phổ biến: 11 chữ số, bắt đầu bằng 13–19
    pattern = r'1[3-9]\d{9}'
    return re.findall(pattern, content)

def save_to_file(numbers: list, output_path: Path):
    with output_path.open("w", encoding="utf-8") as f:
        f.writelines(f"{num}\n" for num in numbers)
        f.write(f"\nTổng cộng: {len(numbers)} số\n")
    print(f"Đã lưu {len(numbers)} số điện thoại vào {output_path}")

# Sử dụng
input_file = Path(input("Nhập đường dẫn tệp đầu vào: "))
output_file = Path(input("Nhập đường dẫn tệp đầu ra: "))
phones = extract_phone_numbers(input_file)
save_to_file(phones, output_file)

Ghi dữ liệu văn bản vào bảng tính Excel

import pandas as pd

def text_to_excel(input_path: str, output_path: str, sheet_name: str = "Dữ liệu"):
    with open(input_path, encoding="utf-8") as f:
        lines = [line.strip() for line in f if line.strip()]
    
    # Giả sử mỗi dòng có dạng "Tên: Nguyễn Văn A; Tuổi: 25"
    records = []
    for line in lines:
        entry = {}
        for pair in line.split(";"):
            if ":" in pair:
                key, value = map(str.strip, pair.split(":", 1))
                entry[key] = value
        records.append(entry)
    
    df = pd.DataFrame(records)
    df.to_excel(output_path, sheet_name=sheet_name, index=False)
    print(f"Đã xuất {len(df)} bản ghi vào {output_path}")

# Sử dụng
text_to_excel(
    input_path=input("Đường dẫn tệp văn bản: "),
    output_path=input("Đường dẫn Excel xuất ra: "),
    sheet_name=input("Tên sheet (mặc định: Dữ liệu): ") or "Dữ liệu"
)

Xóa các tệp trùng lặp dựa trên hàm băm

import hashlib
from pathlib import Path

def compute_hash(file_path: Path) -> str:
    with file_path.open("rb") as f:
        return hashlib.md5(f.read()).hexdigest()

def remove_duplicates_in_folder(folder: Path):
    seen_hashes = set()
    deleted_count = 0
    
    for file_path in folder.iterdir():
        if file_path.is_file():
            file_hash = compute_hash(file_path)
            if file_hash in seen_hashes:
                file_path.unlink()
                deleted_count += 1
            else:
                seen_hashes.add(file_hash)
    
    print(f"Đã xóa {deleted_count} tệp trùng lặp.")

# Sử dụng
folder_path = Path(input("Nhập thư mục cần quét: "))
remove_duplicates_in_folder(folder_path)

Web Scraping Với Python

Python cung cấp nhiều thư viện linh hoạt cho việc thu thập dữ liệu từ web. Đối với trang tĩnh, requestsBeautifulSoup là lựa chọn hiệu quả. Với trang động hoặc yêu cầu tương tác (như cuộn, nhấn nút), Selenium hoặc Playwright phù hợp hơn. Lưu ý luôn tuân thủ robots.txt, thiết lập độ trễ giữa các yêu cầu và kiểm tra điều khoản sử dụng của trang đích.

Học Máy & Xử Lý Hình Ảnh

Với thư viện như scikit-learn, TensorFlow, hoặc PyTorch, Python hỗ trợ đầy đủ chuỗi quy trình học máy: tiền xử lý dữ liệu, huấn luyện mô hình, đánh giá và triển khai. Đối với xử lý ảnh, OpenCVPillow cho phép thực hiện nhận diện đối tượng, phát hiện cạnh, tăng cường ảnh, thêm watermark, chuyển đổi định dạng hàng loạt — tất cả đều có thể tự động hóa qua script.

Phát Triển Web

Các framework như DjangoFlask giúp xây dựng ứng dụng web nhanh chóng và bảo mật. Django đặc biệt nổi bật nhờ kiến trúc "batteries-included": ORM tích hợp, hệ thống quản trị tự sinh, xác thực người dùng sẵn sàng — phù hợp cho các hệ thống phức tạp như CMS, nền tảng phân tích hoặc hệ thống nội bộ. Flask thì nhẹ và linh hoạt hơn, thích hợp cho microservice hoặc API RESTful.

Vẽ Hình Với Turtle

Thư viện turtle không chỉ dành cho người mới — nó còn là công cụ trực quan để minh họa thuật toán đệ quy, fractal hoặc mô phỏng hành vi tự nhiên. Ví dụ dưới đây vẽ cây nhị phân với hiệu ứng màu theo độ sâu:

import turtle as t
import random

def draw_branch(length: float, depth: int):
    if length < 5 or depth < 0:
        return
    
    t.pensize(max(1, 4 - depth))
    
    if depth > 3:
        t.color("#333333")
    elif depth > 1:
        t.color("#2E8B57")
    else:
        t.color("#FF69B4")
    
    t.forward(length)
    angle = random.randint(20, 35)
    
    t.left(angle)
    draw_branch(length * 0.7, depth - 1)
    t.right(angle * 2)
    draw_branch(length * 0.7, depth - 1)
    t.left(angle)
    t.backward(length)

t.speed(0)
t.left(90)
t.penup()
t.goto(0, -200)
t.pendown()
draw_branch(100, 6)
t.hideturtle()
t.done()

Thẻ: python automation web-scraping machine-learning opencv

Đăng vào ngày 17 tháng 05 lúc 06:09