01/10/2018, 01:11

Sử dụng EOF trong python?

Chào các bạn mình học python cũng đã khá lâu
Nhưng mình chỉ mới học về tệp trong python được một vài ngày thôi
Mình đang viết một chương trình mà xét nếu chưa kết thúc file thì thực hiện một số câu lệnh
Mình biết với phần này thì phải dùng EOF nhưng mà mình lại không biết dùng EOF trong python
Có bạn nào biết chỉ mình với

Khoa NTA viết 03:27 ngày 01/10/2018

Dấu hiệu của end-of-file trong Python là khi các method đọc file trả về chuỗi rỗng. Hoặc bạn cũng có thể check xem là vị trí con trỏ file có đang nằm ở cuối file hay không bằng cách dùng biểu thức:

import os
f = open('test.txt', 'r')
if f.tell() == os.fstat(f.fileno()).st_size:
   # vị trí con trỏ file bằng với file size => đã nằm ở cuối file
   pass

Hoặc đơn giản, dễ hiểu hơn là bạn cứ đọc hết file vào trong 1 biến rồi xử lý (method read khi không có tham số).

Tham khảo stackoverflow.com

Nguyễn Hiến viết 03:20 ngày 01/10/2018

Cám on bạn mình cũng đã thử một vài mã khác nhưng mà cuối cùng cũng xong
Mình làm theo cái cách sau của bạn nhưng mà mình làm hơi khác tí

from sys import argv

script, filename = argv

print “Open File !!!”
target = open(filename, ‘r’)

while True:
line = target.readline()
if not line:
break
print line
target.close()

Cám ơn bạn nhiều

Khoa NTA viết 03:17 ngày 01/10/2018

Haha, mình không có ý bắt bẻ nhưng if not line tức là đang kiểm tra line có trả về chuỗi rỗng hay không đó.

Nguyễn Hiến viết 03:19 ngày 01/10/2018

Sự thật là mình cũng thử rất nhiều cách khác nhưng mà mình thấy nó hơi khó
Mình thấy python lúc sử dụng EOF khó hơn C hay PASCAL ngày trước mình có học
Lúc trước mình dùng PASCAL thời còn lớp 11, lớp 8 í
Mình chỉ cần nhập là if not EOF(target_file) thì phải
Giờ mình tính làm một cái phần mềm hướng đối tượng “Từ danh sách khách hàng bên ngoài lấy ra các thông số cần thiết để in ra màn hình” nhưng mà mình vẫn đang kẹt lại cái EOF này hic.

Khoa NTA viết 03:19 ngày 01/10/2018

Đúng là mình cũng thấy khó hiểu, trong C có hàm feof() là kiểm tra được dễ dàng mà trong Python nó lại quy ước kiểu như vậy. Thôi bạn cứ load hết vào 1 biến rồi xử lý, dù sao xử lý trên bộ nhớ cũng nhanh hơn là xử lý có thêm ổ cứng.

Bài liên quan
0