2013-07-30 29 views
33

Tôi muốn đọc dòng tệp văn bản lớn theo dòng (và dừng nếu một dòng có "str" ​​được tìm thấy). Làm thế nào để kiểm tra, nếu tập tin kết thúc là đạt?Python: đọc tất cả các dòng tệp văn bản trong vòng

fn = 't.log' 
f = open(fn, 'r') 
while not _is_eof(f): ## how to check that end is reached? 
    s = f.readline() 
    print s 
    if "str" in s: break 

Trả lời

74

Không cần để kiểm tra EOF trong python, chỉ cần làm:

with open('t.ini') as f: 
    for line in f: 
     print line 
     if 'str' in line: 
      break 

Why the with statement:

Đó là thực tế tốt để sử dụng các từ khóa with khi giao dịch với tập tin đối tượng . Điều này có lợi thế là các tập tin được đóng lại đúng sau khi bộ phần mềm của nó kết thúc, ngay cả khi một ngoại lệ được nâng lên trên đường.

8

Chỉ cần lặp qua từng dòng trong tệp. Python tự động kiểm tra kết thúc tệp và đóng tệp cho bạn (sử dụng cú pháp with).

with open('fileName', 'r') as f: 
    for line in f: 
     if 'str' in line: 
      break 
3

Có những trường hợp bạn không thể sử dụng cấu trúc (khá thuyết phục) with... for.... Trong trường hợp đó, làm như sau:

line = self.fo.readline() 
if len(line) != 0: 
    if 'str' in line: 
     break 

này sẽ làm việc vì sự readline() để lại một ký tự xuống dòng trailing, nơi như EOF chỉ là một chuỗi rỗng.

Các vấn đề liên quan