Tôi muốn sử dụng luồng đệm vì tôi muốn sử dụng phương thức peek()
để xem trước nhưng sử dụng luồng của tôi bằng một phương pháp khác dự kiến một đối tượng giống như tệp. (Tôi muốn sử dụng seek()
nhưng có thể phải xử lý đường ống trong I/O mà không hỗ trợ truy cập ngẫu nhiên.)python: sử dụng io.BufferedReader trên luồng thu được bằng open()?
Nhưng trường hợp thử nghiệm này không thành công:
AttributeError: 'file' đối tượng không có thuộc tính ' _checkReadable '
import sys
import io
srcfile = sys.argv[1]
with open(srcfile, 'rb') as f:
fbuf = io.BufferedReader(f)
print fbuf.read(20)
Điều gì đang xảy ra và cách khắc phục? Tôi nghĩ rằng BufferedReader được dự định để đệm một dòng. Nếu vậy, tại sao chức năng open()
không trả về một cái gì đó tương thích với nó?
Thật thú vị. Mặc dù chúng tôi có cùng phiên bản (2.7.x), chúng tôi nhận được thông báo lỗi hơi khác nhau. – username
Tôi đã tìm thấy nó. Có một nhận xét trong io.py là "" "Các mô tả phương pháp và việc triển khai mặc định được kế thừa từ phiên bản C." "" Vì vậy, nó phụ thuộc vào các phiên bản c hoặc hệ điều hành. – username
@username: Đây không phải là hệ điều hành cụ thể. Python của tôi 2.6.7 cũng phàn nàn về '_checkReadable', trong khi 2.7.2 của tôi phàn nàn về' readable'.Tôi không thể tìm thấy cam kết ngay bây giờ, nhưng điều này có lẽ đã thay đổi điều này ở đâu đó giữa 2.7.0 và 2.7.2. –