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
Sử dụng EOF trong python?
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
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
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 đó.
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.
Đú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.
Dễ lắm bạn à
import sys
sys.stdin = open('input.txt', 'r')
while True:
try: v = input() # lấy giá trị
except: break # nếu như có lỗi ở dòng trên
# thì đó là EOF và kết thúc
# vòng lặp while True
Cũng 5 năm rồi, có thể giờ ngta thành master rồi.
PS: ghi đè stdin để đọc file là 1 điều không nên làm vì có thể sinh ra side effect
à mình thêm stdin để làm vd EOF thôi mà