Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ความแตกต่างระหว่าง os.open และ os.fdopen ใน Python

File Descriptors - low-level facility จาก OS kernel เป็น integer ระบุไฟล์ในตาราง open files ของแต่ละ process ใช้กับ system calls แต่ยุ่งยาก (fixed buffers, retries, manual error handling)

File Objects - Python classes wrap file descriptors ทำให้สะดวก ปลอดภัย มี error handling, buffering, line-by-line reading, ปิดอัตโนมัติเมื่อ garbage collected

  • open() (built-in) - รับ filename คืน file object ต่างจาก os.open()
  • os.open() - รับ filename คืน file descriptor ใช้กับ low-level functions (os.read, os.write) หรือส่งให้ os.fdopen()
  • os.fdopen() - รับ file descriptor มีอยู่แล้ว สร้าง file object รอบมัน แปลง fd เป็น file object เต็มรูปแบบ ใช้ตอน interface กับ C code หรือ API ที่คืน fd

ทั้งสองให้ low-level file operations ใกล้เคียงระบบปฏิบัติการ