Search code examples
pythondata-mininglarge-data

Read specific number of lines in python


I have the BIG data text file for example:

#01textline1
1 2 3 4 5 6
2 3 5 6 7 3
3 5 6 7 6 4
4 6 7 8 9 9

1 2 3 6 4 7
3 5 7 7 8 4
4 6 6 7 8 5

3 4 5 6 7 8
4 6 7 8 8 9
..
..

Solution

  • You do not need a loop to accomplish your purpose. Just use the index function on the list to get the index of the two lines and take all the lines between them.

    Note that I changed your file.readlines() to strip trailing newlines.

    (Using file.read().splitlines() can fail, if read() ends in the middle of a line of data.)

    file1 = open("data.txt","r")
    file2=open("newdata.txt","w")
    lines = [ line.rstrip() for line in file1.readlines() ]
    
    firstIndex = lines.index("#02textline2")
    secondIndex = lines.index("#03textline3")
    
    print firstIndex, secondIndex
    file2.write("\n".join(lines[firstIndex  + 1 : secondIndex]))
    
    
    file1.close()
    file2.close()