01/10/2018, 12:06
Python File I/O
Chào các anh chị trên diễn đàn.
Em đang tìm hiểu đến phần File I/O
của Python.
Mọi người cho e hỏi dòng lệnh bufsize = 8192
trong đoạn Code dưới đây có nghĩa là gì ạ:
import sys
import os
def file_read_from_tail(fname,lines):
bufsize = 8192
fsize = os.stat(fname).st_size
iter = 0
with open(fname) as f:
if bufsize > fsize:
bufsize = fsize-1
data = []
while True:
iter +=1
f.seek(fsize-bufsize*iter)
data.extend(f.readlines())
if len(data) >= lines or f.tell() == 0:
print('.join(data[-lines:]))
break
file_read_from_tail('test.txt',2)
Đoạn code trên dùng để đọc n dòng cuối cùng của 1 file.
Em cám ơn mọi người.
Bài liên quan
Nó chỉ có ý nghĩa là để đọc file có kích thước dưới 8192 bytes, mà sau đó set
bufsize = fsize - 1
?!Code trên do ai viết vậy? Vòng lặp dùng
while True
rồi cònf.seek(fsize-bufsize*iter)
chỉ chạy được 1 lần (vì bufsize*2 > fsize nên không thể seek đi được).Đoạn code trên nên được viết gọn lại thành:
Đoạn Code trên em tham khảo ở trang này:
w3resource
Python File I/O: Read last n lines of a file - w3resource
Python Exercises, Practice and Solution: Write a Python program to read last n lines of a file.
Cám ơn anh nhiều ạ.