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

วิธีระบุ Buffer Size เมื่อเปิดไฟล์ใน Python

หากคุณดู Function Definition ของ open - open(name[, mode[, buffering]]) จะเห็นว่าใน Python 2 มันรับ 3 Arguments ตัวที่สามคือ Buffering Argument Buffering นี้เป็น Optional ระบุขนาด Buffer ที่ต้องการของไฟล์: 0 หมายถึง Unbuffered, 1 หมายถึง Line Buffered, ค่าบวกอื่นๆ หมายถึงใช้ Buffer ขนาดประมาณนั้น (ใน Bytes) ค่าลบหมายถึงใช้ System Default ซึ่งปกติคือ Line Buffered สำหรับ TTY Devices และ Fully Buffered สำหรับไฟล์อื่นๆ หากละเว้น จะใช้ System Default

ตัวอย่าง หากคุณต้องการเปิดไฟล์ด้วย Buffer Size 128 Bytes คุณสามารถเปิดได้ดังนี้:

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

ใน Python 3 Function Definition ของ open คือ: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) buffering เป็น Optional Integer ใช้ตั้งค่า Buffering Policy ส่ง 0 เพื่อปิด Buffering (อนุญาตเฉพาะ Binary Mode), 1 เพื่อเลือก Line Buffering (ใช้ได้เฉพาะ Text Mode), และ Integer > 1 เพื่อระบุขนาดใน Bytes ของ Fixed-Size Chunk Buffer เมื่อไม่ส่ง Buffering Argument Default Buffering Policy ทำงานดังนี้:

  • Binary Files ถูก Buffer ใน Fixed-Size Chunks ขนาด Buffer ถูกเลือกโดย Heuristic พยายามกำหนด "Block Size" ของอุปกรณ์พื้นฐาน และ Fallback ไปที่ io.DEFAULT_BUFFER_SIZE
  • "Interactive" Text Files (ไฟล์ที่ isatty() คืนค่า True) ใช้ Line Buffering Text Files อื่นๆ ใช้ Policy เหมือน Binary Files

ตัวอย่างสำหรับ Python 3 เหมือน Python 2 ตัวอย่าง หากคุณต้องการเปิดไฟล์ด้วย Buffer Size 128 Bytes:

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