Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Khác biệt giữa os.open và os.fdopen trong Python?


File descriptor là cơ chế low-level làm việc file trực tiếp từ OS kernel. File descriptor là integer xác định file mở trong bảng file mở của kernel cho mỗi process. Nhiều system call nhận file descriptor, nhưng không tiện: yêu cầu fixed-width buffers, retry nhiều lần, xử lý lỗi thủ công.

File object là class Python wrap file descriptor để làm việc file tiện hơn, ít lỗi hơn. Cung cấp error-handling, buffering, đọc line-by-line, tự đóng khi garbage collected.

  • Built-in open() nhận tên file trả về Python file object. Khác với os.open().

  • os.open() nhận tên file trả về file descriptor mới. Dùng cho low-level functions như os.read(), os.write(), hoặc os.fdopen().

  • os.fdopen() nhận file descriptor hiện có xây dựng Python file object quanh nó. Chuyển file descriptor thành file object đầy đủ. Hữu ích khi interface với C code hoặc API chỉ tạo low-level file descriptor.

Cả hai hàm cung cấp chức năng gần hệ thống hơn trong Python.