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.

Khoa NTA viết 14:07 ngày 01/10/2018

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òn f.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:

def file_read_from_tail(file_name, lines):
	with open(file_name) as f_in:
		print(''.join(f_in.readlines()[-lines:]))
giang viết 14:12 ngày 01/10/2018

Đ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 ạ.

Bài liên quan
0