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

อะไรคือความแตกต่างระหว่าง os.open และ os.fdopen ใน python?


ตัวอธิบายไฟล์เป็นสิ่งอำนวยความสะดวกระดับต่ำสำหรับการทำงานกับไฟล์ที่ได้รับจากเคอร์เนล OS โดยตรง file descriptor เป็นจำนวนเต็มที่ระบุไฟล์ที่เปิดอยู่ในตารางของไฟล์ที่เปิดเก็บไว้โดยเคอร์เนลสำหรับแต่ละกระบวนการ การเรียกระบบจำนวนหนึ่งยอมรับตัวอธิบายไฟล์ แต่ไม่สะดวกในการทำงาน โดยทั่วไปต้องใช้บัฟเฟอร์ความกว้างคงที่ การลองใหม่หลายครั้งในบางเงื่อนไข และการจัดการข้อผิดพลาดด้วยตนเอง

อ็อบเจ็กต์ไฟล์เป็นคลาส Python ที่รวม file descriptor เพื่อให้การทำงานกับไฟล์สะดวกยิ่งขึ้นและเกิดข้อผิดพลาดน้อยลง ตัวอย่างเช่น มีการจัดการข้อผิดพลาด การบัฟเฟอร์ การอ่านทีละบรรทัด และปิดเมื่อรวบรวมขยะ

  • open() ในตัวใช้ชื่อไฟล์และส่งคืนวัตถุไฟล์ Python ใหม่ โปรดทราบว่าสิ่งนี้แตกต่างจาก os.open()

  • os.open() ใช้ชื่อไฟล์และส่งคืน file descriptor ใหม่ file descriptor นี้สามารถส่งต่อไปยังฟังก์ชันระดับล่างอื่นๆ เช่น os.read() และ os.write() หรือไปยัง os.fdopen()

  • os.fdopen() ใช้ file descriptor ที่มีอยู่และสร้างอ็อบเจกต์ไฟล์ Python รอบๆ มันแปลง file descriptor เป็นวัตถุไฟล์แบบเต็ม มีประโยชน์เมื่อเชื่อมต่อกับโค้ด C หรือ API ที่สร้างเฉพาะตัวอธิบายไฟล์ระดับต่ำเท่านั้น

ดังนั้นฟังก์ชันทั้งสองนี้จึงใกล้เคียงกับฟังก์ชันการทำงานของระบบใน Python มากขึ้น