Python: read all text file lines in loop

前端 未结 4 858
予麋鹿
予麋鹿 2020-11-28 08:56

I want to read huge text file line by line (and stop if a line with \"str\" found). How to check, if file-end is reached?

fn = \'t.log\'
f = open(fn, \'r\')
         


        
相关标签:
4条回答
  • 2020-11-28 09:40

    Just iterate over each line in the file. Python automatically checks for the End of file and closes the file for you (using the with syntax).

    with open('fileName', 'r') as f:
        for line in f:
           if 'str' in line:
               break
    
    0 讨论(0)
  • 2020-11-28 09:43

    There's no need to check for EOF in python, simply do:

    with open('t.ini') as f:
       for line in f:
           # For Python3, use print(line)
           print line
           if 'str' in line:
              break
    

    Why the with statement:

    It is good practice to use the with keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way.

    0 讨论(0)
  • 2020-11-28 09:45

    You can stop the 2-line separation in the output by using

        with open('t.ini') as f:
           for line in f:
               print line.strip()
               if 'str' in line:
                  break
    
    0 讨论(0)
  • 2020-11-28 09:47

    There are situations where you can't use the (quite convincing) with... for... structure. In that case, do the following:

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

    This will work because the the readline() leaves a trailing newline character, where as EOF is just an empty string.

    0 讨论(0)
提交回复
热议问题