Thanks steven On Tuesday, March 19, 2013 8:11:22 PM UTC+5:30, Steven D'Aprano wrote: > On Tue, 19 Mar 2013 07:20:57 -0700, razinzamada wrote: > > > > > I'm currently trying to extract some data between 2 lines of an input > > > file using Python. the infile is set up such that there is a line > > > -START- where I need the next 10 lines of code if and only if the -END- > > > condition occurs before the next -START-. The -START- line occurs many > > > times before the -END-. Heres a general example of what I mean: > > > > > > blah > > > blah > > > -START- > > > 10 lines I DONT need > > > blah > > > -START- > > > 10 lines I need > > > blah > > > blah > > > -END- > > > blah > > > blah > > > -START- > > > 10 lines I dont need > > > blah > > > -START- > > > > > > .... and so on and so forth > > > > [...] > > > > > heres the code I have for printing the -START- + 10 lines: > > > > > > in = open('input.log') > > > > No it is not. "in" is a reserved word in Python, that code cannot > > possibly work, it will give a SyntaxError. > > > > > > Try this code. Untested but it should do want you want. > > > > > > infile = open('input.log') > > outfile = open('output.txt', 'a') > > # Accumulate lines between START and END lines, ignoring everything else. > > collect = False # Initially we start by ignoring lines. > > for line in infile: > > if '-START-' in line: > > # Ignore any lines already seen, and start collecting. > > accum = [] > > collect = True > > elif '-END-' in line: > > # Write the first ten accumulated lines. > > outfile.writelines(accum[:10]) > > # Clear the accumulated lines. > > accum = [] > > # and stop collecting until the next START line > > collect = False > > elif collect: > > accum.append(line) > > > > outfile.close() > > infile.close() > > > > > > > > -- > > Steven
-- http://mail.python.org/mailman/listinfo/python-list