Trong Python, cho một tập tin nhị phân, tôi có thể viết này:Python tập tin iterator qua một tập tin nhị phân với thành ngữ mới hơn
buf_size=1024*64 # this is an important size...
with open(file, "rb") as f:
while True:
data=f.read(buf_size)
if not data: break
# deal with the data....
Với một file văn bản mà tôi muốn đọc line-by-line, tôi có thể viết này:
with open(file, "r") as file:
for line in file:
# deal with each line....
Đó là viết tắt cho:
with open(file, "r") as file:
for line in iter(file.readline, ""):
# deal with each line....
Thành ngữ này được ghi chép lại trong PEP 234 nhưng tôi có faile d để định vị một thành ngữ tương tự cho các tệp nhị phân.
Tôi đã thử này:
>>> with open('dups.txt','rb') as f:
... for chunk in iter(f.read,''):
... i+=1
>>> i
1 # 30 MB file, i==1 means read in one go...
Tôi đã thử đưa iter(f.read(buf_size),'')
nhưng đó là một lỗi cú pháp vì Parens sau callable trong iter().
Tôi biết tôi có thể viết một hàm, nhưng có cách nào với thành ngữ mặc định của for chunk in file:
nơi tôi có thể sử dụng kích thước bộ đệm so với dòng được định hướng không?
Cảm ơn bạn đã đề cập đến các newbie Python đang cố gắng viết tập lệnh Python không tầm thường và thành ngữ đầu tiên của mình.
Tôi đã giả sử có một số cách dựng sẵn mà tôi vừa xem. Vì dường như không phải là cách tích hợp, điều này rất dễ đọc và dễ hiểu. Cảm ơn! – dawg