Hướng dẫn sử dụng các module os, sys và hashlib trong Python

Module os - Tương tác với hệ điều hành

Module os cung cấp giao diện để thao tác với hệ thống tệp và thực thi lệnh hệ thống. Dưới đây là các hàm thường dùng nhất được nhóm theo chức năng.

Quản lý thư mục

import os

# Tạo cấu trúc thư mục đa cấp độ
os.makedirs('du_an/thu_vien/tien_ich', exist_ok=True)

# Xóa thư mục rỗng đa cấp
os.removedirs('du_an/thu_vien/tien_ich')

# Tạo thư mục đơn lẻ
os.mkdir('tap_tin_luu_tru')

# Xóa thư mục rỗng
os.rmdir('tap_tin_luu_tru')

# Di chuyển giữa thư mục
os.chdir('/home/user/documents')

# Liệt kê tất cả tên tệp và thư mục con
danh_sach = os.listdir('.')
print(danh_sach)

# Lấy đường dẫn làm việc hiện tại
vi_tri_hien_tai = os.getcwd()
print(f"Thư mục hiện tại: {vi_tri_hien_tai}")

Thao tác tệp tin

# Xóa tệp
os.remove('tep_tam.txt')

# Đổi tên tệp
os.rename('ban_nhap.doc', 'ban_cuoi_cung.doc')

# Lấy metadata tệp
thong_tin = os.stat('chuong_trinh.py')
print(f"Kích thước: {thong_tin.st_size} bytes")
print(f"Thời gian truy cập: {thong_tin.st_atime}")

Xử lý đường dẫn

# Nối đường dẫn an toàn trên mọi nền tảng
duong_dan = os.path.join('thu_muc_cha', 'thu_muc_con', 'tep.txt')

# Tách thành (đường dẫn, tên tệp)
thu_muc, tep = os.path.split('/home/user/data/file.csv')

# Lấy đường dẫn tuyệt đối
duong_dan_tuyet_doi = os.path.abspath('script.py')

# Kiểm tra loại đường dẫn
print(os.path.isfile('anh.png'))   # Kiểm tra có phải tệp
print(os.path.isdir('thu_muc'))    # Kiểm tra có phải thư mục
print(os.path.isabs('/home/user')) # Kiểm tra đường dẫn tuyệt đối

# Kiểm tra tồn tại
if os.path.exists('quan_trong.txt'):
    print("Tệp đã tồn tại")

# Lấy dung lượng tệp
kich_thuoc = os.path.getsize('video.mp4')

Duyệt cây thư mục

# Duyệt đệ quy qua toàn bộ cây thư mục
for root_dir, sub_dirs, file_names in os.walk('projects/'):
    print(f"Thư mục gốc: {root_dir}")
    print(f"Thư mục con: {sub_dirs}")
    print(f"Tên tệp: {file_names}")
    print("=" * 30)

Thực thi lệnh hệ thống

# Chạy lệnh shell và đọc đầu ra
ket_qua = os.popen('ls -lh').read()
print(ket_qua)

Chú ý: os.remove() yêu cầu tệp phải được đóng hoàn toàn trước khi xóa.

Module sys - Thông tin hệ thống

Module sys cung cấp quyền truy cập vào các tham số và cấu hình của trình thông dịch Python.

import sys

# Danh sách đường dẫn tìm kiếm module
print("Đường dẫn module:", sys.path)

# Nền tảng hệ điều hành
print("Platform:", sys.platform)

# Phiên bản Python
print("Version:", sys.version)

# Xử lý tham số dòng lệnh
# Ví dụ chạy: python script.py install package_name
if len(sys.argv) > 1:
    hanh_dong = sys.argv[1]
    doi_tuong = sys.argv[2] if len(sys.argv) > 2 else "default"
    print(f"Thực hiện '{hanh_dong}' trên '{doi_tuong}'")

Module hashlib - Mã hóa và tạo mã băm

Module hashlib triển khai các thuật toán băm mật mã phổ biến.

Tạo mã băm cơ bản

import hashlib

# Tạo MD5 hash
du_lieu = "mat_khau_nguoi_dung"
doi_tuong_md5 = hashlib.md5(du_lieu.encode('utf-8'))
ma_bam_md5 = doi_tuong_md5.hexdigest()
print(f"MD5: {ma_bam_md5}")

# Tạo SHA-256 hash
doi_tuong_sha256 = hashlib.sha256(du_lieu.encode('utf-8'))
ma_bam_sha256 = doi_tuong_sha256.hexdigest()
print(f"SHA-256: {ma_bam_sha256}")

# Đặc điểm: Kết quả có độ dài cố định, không thể đảo ngược

Kiểm tra tính toàn vẹn tệp tin

def kiem_tra_tinh_toan_ven(ten_tep):
    """Tính mã SHA-256 cho toàn bộ tệp"""
    sha256_obj = hashlib.sha256()
    try:
        with open(ten_tep, 'rb') as f:
            for chunk in iter(lambda: f.read(8192), b""):
                sha256_obj.update(chunk)
    except FileNotFoundError:
        return "Tệp không tồn tại"
    return sha256_obj.hexdigest()

# Kiểm tra hai tệp có giống nhau không
ma_bam_1 = kiem_tra_tinh_toan_ven('phien_ban1.zip')
ma_bam_2 = kiem_tra_tinh_toan_ven('phien_ban2.zip')
print(f"Tệp 1: {ma_bam_1}")
print(f"Tệp 2: {ma_bam_2}")
print(f"Giống nhau: {ma_bam_1 == ma_bam_2}")

Các ứng dụng thực tế:

  • Lưu trữ mật khẩu dưới dạng mã băm thay vì văn bản thuần
  • Xác minh tính toàn vẹn của tệp tin sau khi tải về
  • Tạo chữ ký số cho dữ liệu

Thẻ: python-os-module python-sys-module python-hashlib md5-hash sha256-hash

Đăng vào ngày 11 tháng 8 lúc 21:50