Các phương thức phổ biến của mô-đun os trong Python

Quản lý thư mục và đường dẫn

Lấy đường dẫn hiện tại bằng os.getcwd(). Hàm này trả về thư mục làm việc chính hiện giờ của tiến trình.

Để thay đổi thư mục làm việc, dùng os.chdir(path). Hành động này tương tự lệnh cd trong terminal:

import os
os.chdir('/home/user/documents')
print(os.getcwd())  # In ra: /home/user/documents

Danh sách các tập tin và thư mục con trong một đường dẫn cụ thể có thể lấy được qua os.listdir(path). Kết quả là danh sách tên, không bao gồm đường dẫn đầy đủ.

Tạo và xóa thư mục

Dùng os.mkdir(path) để tạo một thư mục đơn. Nếu cần tạo nhiều tầng thư mục cùng lúc (bao gồm cả thư mục cha), nên dùng os.makedirs(path).

Xóa file sử dụng os.remove(path). Để xóa thư mục rỗng, dùng os.rmdir(path). Nếu muốn xóa nhiều thư mục rỗng theo cấp bậc, hàm os.removedirs(path) sẽ thực hiện xóa đệ quy từ trong ra ngoài.

Đổi tên và di chuyển

Hàm os.rename(src, dst) cho phép đổi tên hoặc di chuyển tập tin/thư mục. Nếu đích đã tồn tại, hành động có thể thất bại tùy hệ điều hành. Trong khi đó, os.replace(src, dst) hoạt động tương tự nhưng sẽ ghi đè nếu đích tồn tại.

os.rename('document.txt', 'report.txt')

Xử lý đường dẫn một cách linh hoạt

Kết hợp các đoạn đường dẫn thành một đường dẫn hợp lệ theo hệ điều hành bằng os.path.join(), giúp chương trình hoạt động tốt trên cả Windows và Unix.

file_path = os.path.join('data', 'raw', 'input.csv')
print(file_path)  # Ví dụ: data/raw/input.csv hoặc data\raw\input.csv

Chuyển đổi sang đường dẫn tuyệt đối với os.path.abspath(path). Trích xuất tên tập tin hoặc thư mục cuối cùng trong đường dẫn dùng os.path.basename(path), còn os.path.dirname(path) trả về phần thư mục cha.

Phân tách tên file và phần mở rộng dùng os.path.splitext():

name, ext = os.path.splitext('image.png')
print(name)  # image
print(ext)   # .png

Kiểm tra và truy vấn thông tin hệ thống tệp

Dùng os.path.exists(path) để kiểm tra sự tồn tại của một đường dẫn. Phân biệt giữa file và thư mục bằng os.path.isfile(path)os.path.isdir(path).

Lấy kích thước file (tính bằng byte):

size = os.path.getsize('data.bin')

Thông tin chi tiết về file như thời gian sửa đổi, quyền truy cập có thể lấy qua os.stat(path):

info = os.stat('script.py')
print("Kích thước:", info.st_size)
print("Thời gian chỉnh sửa:", info.st_mtime)

Tương tác với hệ điều hành và môi trường

Thực thi lệnh hệ thống trực tiếp với os.system(command):

os.system('echo "Xin chào"')  # In ra dòng chữ

Nếu cần đọc kết quả đầu ra của lệnh, dùng os.popen(command):

result = os.popen('pwd').read().strip()
print("Thư mục hiện tại:", result)

Truy cập biến môi trường qua os.environ hoặc hàm an toàn hơn os.getenv(key, default):

home_dir = os.getenv('HOME', '/tmp')
java_home = os.environ.get('JAVA_HOME')

Duyệt cây thư mục và thông tin hệ thống

Duyệt đệ quy toàn bộ cấu trúc thư mục bằng os.walk(top), trả về bộ ba (đường dẫn, danh sách thư mục con, danh sách tập tin) tại mỗi cấp độ.

Một số hằng số hữu ích:

  • os.sep: ký tự phân cách thư mục (/ hoặc \)
  • os.pathsep: phân cách trong biến PATH (: hoặc ;)
  • os.linesep: ký tự ngắt dòng theo nền tảng
  • os.name: tên hệ điều hành ('posix', 'nt', ...)
  • os.cpu_count(): số lõi CPU có sẵn
  • os.urandom(n): sinh n byte ngẫu nhiên an toàn (dùng trong mã hóa)

Thông tin tiến trình và tín hiệu

Lấy ID tiến trình hiện tại và tiến trình cha:

print("PID:", os.getpid())
print("PPID:", os.getppid())

Gửi tín hiệu đến tiến trình khác (chỉ hỗ trợ Unix):

os.kill(1234, signal.SIGTERM)

Trên Windows, dùng os.startfile(path) để mở file bằng ứng dụng mặc định (ví dụ: mở PDF bằng trình đọc).

Thẻ: os python system File Handling path manipulation

Đăng vào ngày 7 tháng 9 lúc 19:24