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

เราจะระบุขนาดบัฟเฟอร์เมื่อเปิดไฟล์ใน Python ได้อย่างไร


หากคุณดูนิยามฟังก์ชันของ open - open(name[, mode[, buffering]]) คุณจะเห็นว่าต้องใช้ 3 อาร์กิวเมนต์ใน Python 2 อันที่สามคือ บัฟเฟอร์ อาร์กิวเมนต์บัฟเฟอร์เสริมระบุขนาดบัฟเฟอร์ที่ต้องการของไฟล์:0 หมายถึงไม่มีบัฟเฟอร์ 1 หมายถึงบัฟเฟอร์บรรทัด ค่าบวกอื่น ๆ หมายถึงใช้บัฟเฟอร์ขนาดนั้น (โดยประมาณ) (เป็นไบต์) การบัฟเฟอร์เชิงลบหมายถึงการใช้ค่าดีฟอลต์ของระบบ ซึ่งมักจะเป็นบรรทัดบัฟเฟอร์สำหรับอุปกรณ์ tty และบัฟเฟอร์เต็มสำหรับไฟล์อื่น หากไม่ระบุ ระบบจะใช้ค่าเริ่มต้นของระบบ

ตัวอย่างเช่น หากคุณต้องการเปิดไฟล์ที่มีขนาดบัฟเฟอร์ 128 ไบต์ คุณสามารถเปิดไฟล์ในลักษณะนี้ −

>>> open('my_file', 'r+', 128)

ใน Python 3 นิยามฟังก์ชันของ open คือ open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener =ไม่มี) การบัฟเฟอร์เป็นจำนวนเต็มทางเลือกที่ใช้ในการตั้งค่านโยบายการบัฟเฟอร์ ผ่าน 0 เพื่อปิดการบัฟเฟอร์ (อนุญาตเฉพาะในโหมดไบนารี), 1 เพื่อเลือกการบัฟเฟอร์บรรทัด (ใช้ได้เฉพาะในโหมดข้อความ) และจำนวนเต็ม> 1 เพื่อระบุขนาดเป็นไบต์ของบัฟเฟอร์กลุ่มที่มีขนาดคงที่ เมื่อไม่มีการบัฟเฟอร์อาร์กิวเมนต์ นโยบายบัฟเฟอร์เริ่มต้นจะทำงานดังนี้ -

  • ไฟล์ไบนารีถูกบัฟเฟอร์เป็นชิ้นขนาดคงที่ ขนาดของบัฟเฟอร์ถูกเลือกโดยใช้ฮิวริสติกที่พยายามกำหนด "ขนาดบล็อก" ของอุปกรณ์พื้นฐานและถอยกลับไปบน io DEFAULT_BUFFER_SIZE

  • ไฟล์ข้อความ "โต้ตอบ" (ไฟล์ที่ isatty() คืนค่า True) ใช้การบัฟเฟอร์บรรทัด ไฟล์ข้อความอื่นๆ ใช้นโยบายที่อธิบายไว้ข้างต้นสำหรับไฟล์ไบนารี

ตัวอย่างสำหรับ Python 3 เหมือนกับ Python 2 สำหรับ ตัวอย่าง , หากคุณต้องการเปิดไฟล์ที่มีขนาดบัฟเฟอร์ 128 ไบต์ คุณสามารถเปิดไฟล์ในลักษณะนี้ -

>>> open('my_file', 'r+', 128)