Python từ lâu đã được công nhận là một trong những ngôn ngữ lập trình dễ tiếp cận nhất, nhờ vào triết lý hướng đối tượng cùng cú pháp tối giản, dễ đọc. Thư viện chuẩn của Python là một kho tàng khổng lồ, chứa đựng vô số module hữu ích cho phép bạn xây dựng mọi loại chương trình, từ những ứng dụng nhỏ gọn đến các hệ thống phức tạp.
Trong bài viết này, tinhoccongnghe.net sẽ giới thiệu 6 script Python hữu ích được thiết kế gọn nhẹ, tập trung vào việc giải quyết một tác vụ cụ thể nhưng mang lại hiệu quả cao. Bạn có thể tận dụng những đoạn mã này không chỉ cho các hoạt động hàng ngày mà còn làm nền tảng để phát triển và mở rộng chức năng cho các dự án lớn hơn, qua đó khẳng định ứng dụng Python thực tế trong nhiều lĩnh vực.
1. Đổi Tên Tệp Hàng Loạt Bằng Python
Việc đổi tên một bộ sưu tập tệp có thể là một công việc tẻ nhạt và tốn thời gian. Mặc dù bạn có thể sử dụng các lệnh shell phức tạp, một script Python đơn giản sẽ giúp bạn tự động hóa quá trình này một cách hiệu quả.
Đoạn mã Python dưới đây cho phép bạn đổi tên tất cả các tệp trong thư mục hiện tại có chứa một đoạn văn bản cụ thể, thay thế nó bằng một mẫu đã cho. Ví dụ, bạn có thể dùng nó để chuyển đổi phần mở rộng của một bộ tệp từ “.htm” sang “.html”.
import os, sys
if len(sys.argv) < 3:
sys.exit("usage: " + sys.argv[0] + " search replace")
for filename in os.listdir("."):
new_filename = filename.replace(sys.argv[1], sys.argv[2])
if new_filename != filename:
os.rename(
os.path.join(".", filename),
os.path.join(".", new_filename),
)
Script này sử dụng hai module cấp thấp hữu ích là os và sys. Ngay lập tức, nó kiểm tra số lượng đối số (sys.argv) và thoát nếu không đủ. Vòng lặp for chính sau đó sẽ duyệt qua tất cả các tên tệp trong thư mục hiện tại (.). Phương thức replace của lớp chuỗi sẽ cố gắng ghi đè đối số thứ nhất bằng đối số thứ hai. Một kiểm tra cuối cùng để xem tên tệp có thay đổi hay không sẽ được thực hiện, sau đó gọi os.rename() để cập nhật tệp nếu cần.
Cần lưu ý rằng script này thiếu khả năng xử lý lỗi toàn diện. Bạn nên giới hạn việc sử dụng nó cho các thao tác tìm kiếm và thay thế chuỗi đơn giản. Luôn cẩn trọng với các hoạt động hàng loạt có thể ảnh hưởng đến nhiều tệp quan trọng.
2. Tạo Ảnh Thumbnail Hiệu Quả Với Python và Pillow
Chỉ với bốn dòng mã, script dưới đây thể hiện sức mạnh của một thư viện tiện lợi – Pillow. Là một phiên bản fork của Python Imaging Library (PIL) nổi tiếng, Pillow cung cấp nhiều chức năng xử lý ảnh mạnh mẽ, hỗ trợ mọi thứ từ các script đơn giản đến các trình chỉnh sửa đồ họa đầy đủ tính năng.
Để chạy script này, bạn cần cài đặt thư viện Pillow. Trên macOS, lệnh brew install pillow hoạt động tốt, hoặc bạn có thể sử dụng pip install Pillow theo khuyến nghị trên trang cài đặt chính thức.
Script sử dụng ba phương thức từ module Image để mở một tệp, tạo ảnh thumbnail và lưu vào một tệp thứ hai:
from PIL import Image
image = Image.open("image.jpg")
image.thumbnail((500, 500))
image.save("image_thumb.jpg")
Lưu ý rằng hàm thumbnail nhận một đối số duy nhất là một tuple. Nó sẽ tạo ra một hình ảnh có cùng tỷ lệ với bản gốc, với chiều rộng và chiều cao tối đa theo kích thước bạn cung cấp.
Mặc dù hữu ích, phiên bản này còn hạn chế vì tên tệp và kích thước được mã hóa cứng. Bạn có thể mở rộng chức năng của nó bằng cách truyền các giá trị này dưới dạng đối số dòng lệnh, như trong phiên bản thứ hai của script này:
from PIL import Image
import sys
if len(sys.argv) < 4:
sys.exit("usage: " + sys.argv[0] + " image width height")
image = Image.open(sys.argv[1])
image.thumbnail((int(sys.argv[2]), int(sys.argv[3])))
image.save("thumb.jpg")
Trong phiên bản nâng cao này, tên tệp thumbnail cuối cùng vẫn được mã hóa cứng. Để tiếp tục mở rộng, bạn có thể tạo tên tệp dựa trên bản gốc hoặc chấp nhận một tham số dòng lệnh thứ tư cho tên tệp đầu ra.
3. Xây Dựng Web Server Đơn Giản trong Python
Một máy chủ web cơ bản có thể cực kỳ hữu ích; nó giúp bạn nhanh chóng duyệt và truy cập các tệp trên máy tính cục bộ của mình, đồng thời cũng là một công cụ tiện lợi cho việc phát triển web.
Ít máy chủ web nào lại đơn giản như đoạn mã Python này:
import http.server, socketserver
port = 8001
with socketserver.TCPServer(
("", port), http.server.SimpleHTTPRequestHandler) as httpd:
print(f"Serving at port {port}")
httpd.serve_forever()
Các module http.server và socketserver thực hiện phần lớn công việc ở đây. Một thể hiện của TCPServer được truyền một cổng và một SimpleHTTPRequestHandler sẽ phục vụ các tệp từ thư mục hiện tại qua HTTP. Phương thức serve_forever (được kế thừa từ lớp socketserver.BaseServer) sẽ xử lý các yêu cầu cho đến khi phương thức shutdown() được gọi.
Theo cảnh báo trong tài liệu của Python, module http.server thiếu bảo mật thích hợp và không nên được sử dụng trong môi trường sản xuất. Mặc dù đây chỉ là một máy chủ “đồ chơi”, nó rất tuyệt vời cho mục đích sử dụng cá nhân và sự đơn giản của nó là vô song.
4. Tạo Mật Khẩu Ngẫu Nhiên An Toàn Bằng Python
Dù cho một tài khoản người dùng mới, một biểu mẫu web hay công việc phát triển của riêng bạn, việc tạo một mật khẩu ngẫu nhiên thường rất cần thiết. Bạn có thể sử dụng trình quản lý mật khẩu, nhưng điều đó không phải lúc nào cũng phù hợp. Với script Python của riêng bạn, bạn có thể kiểm soát chính xác các chi tiết và tinh chỉnh nó để phù hợp với nhu cầu của mình.
import string, random
def main(length: int) -> str:
characters = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(characters) for i in range(length))
print(main(32))
Script này sử dụng các module string và random để tạo một mật khẩu ngẫu nhiên chỉ trong năm dòng mã. Module string có một số hằng số hữu ích chứa các bộ ký tự riêng lẻ như chữ số và chữ cái. Bằng cách kết hợp chúng và chọn một số ngẫu nhiên, script sẽ nối một chuỗi các ký tự để tạo ra mật khẩu cuối cùng.
5. Theo Dõi Giá Tiền Điện Tử Với Python và API CoinGecko
Script này minh họa sức mạnh của một API sạch sẽ, đơn giản. API mà nó sử dụng — từ CoinGecko — chạy trên HTTP, vì vậy nó rất dễ di động và dễ hỗ trợ.
Trước khi chạy script này, bạn nên kiểm tra phản hồi API từ điểm cuối mà nó sử dụng, /simple/price. Bạn sẽ thấy rằng nó trả về dữ liệu định dạng JSON với các mục cho các loại tiền tệ được truyền trong tham số ids.
import urllib.request, json
def get_crypto_prices():
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,litecoin&vs_currencies=usd"
ufile = urllib.request.urlopen(url)
text = ufile.read()
return json.loads(text)
crypto_prices = get_crypto_prices()
for coin, value in crypto_prices.items():
print(f"{coin.capitalize()}: ${value['usd']}")
Module urllib.request bao gồm một phương thức urlopen() để lấy nội dung của một URL và trả về đối tượng HTTPResponse. Đọc văn bản của nó và chuyển nó sang phương thức json.loads() sẽ xây dựng một đối tượng dictionary tương đương.
Kết quả từ một script Python hiển thị giá hiện tại của Bitcoin, Ethereum và Litecoin
JSON là một định dạng rất phổ biến cho các API web vì cú pháp đơn giản và định dạng dễ đọc giúp dễ dàng phân tích và kiểm tra.
6. Hiển thị Bảng Mã ASCII Đầy Đủ Bằng Python
Bộ ký tự ASCII là tập hợp 128 ký tự phổ biến trong tiếng Anh, được sử dụng trong nhiều ngữ cảnh điện toán khác nhau. Hầu hết các ngôn ngữ lập trình đều hỗ trợ chuyển đổi mã ASCII sang các ký tự riêng lẻ và ngược lại, nhưng đôi khi rất hữu ích khi xem tất cả các ký tự ASCII cùng một lúc.
for i in range(32, 128):
print("{:03d}".format(i) + " " + chr(i), end=" ")
if (i - 1) % 10 == 0:
print()
print()
Script này in ra một bảng chứa tất cả các ký tự ASCII từ 32 đến 127, mỗi ký tự cùng với điểm mã của nó:
Điều đầu tiên cần lưu ý là cách hàm range() tích hợp sẵn của Python xử lý các tham số của nó; nó lặp lại bắt đầu từ giá trị đầu tiên, nhưng dừng lại trước khi đạt đến giá trị thứ hai. Trong một ngôn ngữ như JavaScript, vòng lặp for tương đương sẽ trông như thế này: for (i = 0; i < 128; i++) { ... }.
Hầu hết công việc còn lại nằm trong dòng print() và bao gồm việc định dạng mỗi điểm mã với độ rộng cố định là ba chữ số. Hàm chr() trả về một ký tự khi được cung cấp mã ASCII của nó. Một thuộc tính hữu ích của ASCII mà bảng này minh họa là mã của mỗi chữ cái viết thường (a-z) chính xác lớn hơn 32 so với chữ cái viết hoa tương đương.
Thủ thuật còn lại là in một ký tự xuống dòng (newline character) tại điểm thích hợp, để đầu ra được chia thành các hàng một cách đẹp mắt. Điều này sử dụng toán tử % để kiểm tra phần dư của chỉ mục vòng lặp khi chia cho 10, đảm bảo mười ký tự trên mỗi dòng.
Một số hình ảnh theo phong cách ASCII art minh họa sự sáng tạo từ bảng mã ký tự
Kết Luận
Qua 6 script Python hữu ích này, chúng ta có thể thấy rõ sự linh hoạt và mạnh mẽ của Python trong việc giải quyết nhiều tác vụ hàng ngày, từ những công việc quản lý tệp cơ bản đến việc tương tác với các API phức tạp. Mỗi đoạn mã đều đơn giản, dễ hiểu nhưng lại mang lại giá trị thiết thực, minh chứng cho việc ứng dụng Python thực tế không chỉ giới hạn trong các dự án lớn mà còn thể hiện hiệu quả trong những công việc nhỏ nhất.
Tinhoccongnghe.net hy vọng rằng những ví dụ này sẽ truyền cảm hứng cho bạn để khám phá thêm tiềm năng của Python và tự tạo ra những giải pháp độc đáo cho riêng mình. Hãy bắt đầu thử nghiệm các script này, tùy chỉnh chúng theo nhu cầu và đừng ngần ngại chia sẻ những sáng tạo của bạn trong phần bình luận bên dưới!