Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để chúng tôi chỉ định kích thước bộ đệm khi mở tệp bằng Python?


Nếu bạn nhìn vào định nghĩa hàm của open - open (name [, mode [, buffering]]), bạn sẽ thấy rằng nó cần 3 đối số trong Python 2, đối số thứ ba là đệm. Đối số bộ đệm tùy chọn chỉ định kích thước bộ đệm mong muốn của tệp:0 có nghĩa là không có bộ đệm, 1 có nghĩa là dòng được đệm, bất kỳ giá trị dương nào khác có nghĩa là sử dụng bộ đệm có kích thước (xấp xỉ) đó (tính bằng byte). Bộ đệm âm có nghĩa là sử dụng mặc định của hệ thống, thường được đệm dòng cho các thiết bị tty và được đệm đầy đủ cho các tệp khác. Nếu bỏ qua, mặc định của hệ thống sẽ được sử dụng.

Ví dụ:Nếu bạn muốn mở một tệp có kích thước bộ đệm là 128 byte, bạn có thể mở tệp như thế này -

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

Trong Python 3, định nghĩa hàm của open là:open (file, mode ='r', buffering =-1, encoding =None, error =None, newline =None, closefd =True, opener =Không). đệm là một số nguyên tùy chọn được sử dụng để đặt chính sách đệm. Chuyển 0 để tắt bộ đệm (chỉ được phép trong chế độ nhị phân), 1 để chọn bộ đệm dòng (chỉ có thể sử dụng trong chế độ văn bản) và một số nguyên> 1 để chỉ ra kích thước tính bằng byte của bộ đệm chunk có kích thước cố định. Khi không có đối số đệm nào được đưa ra, chính sách đệm mặc định hoạt động như sau -

  • Các tệp nhị phân được lưu vào bộ đệm trong các khối có kích thước cố định; kích thước của bộ đệm được chọn bằng cách sử dụng phương pháp heuristic cố gắng xác định “kích thước khối” của thiết bị cơ bản và quay trở lại io.DEFAULT_BUFFER_SIZE.

  • Tệp văn bản “tương tác” (tệp mà isatty () trả về True) sử dụng bộ đệm dòng. Các tệp văn bản khác sử dụng chính sách được mô tả ở trên cho các tệp nhị phân.

Ví dụ cho Python 3 giống với Python 2. Ví dụ: ví dụ , Nếu bạn muốn mở tệp có kích thước bộ đệm là 128 byte, bạn có thể mở tệp như thế này -

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