title: Using python to write specific lines from one file to another file
body: <p>I have ~200 short text files (50kb) that all have a similar format. I want to find a line in each of those files that contains a certain string and then write that line plus the next three lines (but not rest of the lines in the file) to another text file. I am trying to teach myself python in order to do this and have written a very simple and crude little script to try this out. I am using version 2.6.5, and running the script from Mac terminal:</p>
  
  <pre><code>#!/usr/bin/env python
  
  f = open('Test.txt')
  
  Lines=f.readlines()
  searchquery = 'am\n'
  i=0
  
  while i &lt; 500:
      if Lines[i] == searchquery:
          print Lines[i:i+3]
          i = i+1
      else:
          i = i+1
  f.close()
  </code></pre>
  
  <p>This more or less works and prints the output to the screen. But I would like to print the lines to a new file instead, so I tried something like this:</p>
  
  <pre><code>f1 = open('Test.txt')
  f2 = open('Output.txt', 'a')
  
  Lines=f1.readlines()
  searchquery = 'am\n'
  i=0
  
  while i &lt; 500:
  if Lines[i] == searchquery:
      f2.write(Lines[i])
      f2.write(Lines[i+1])
      f2.write(Lines[i+2])
      i = i+1
  else:
      i = i+1
  f1.close()
  f2.close()
  </code></pre>
  
  <p>However, nothing is written to the file. I also tried </p>
  
  <pre><code>from __future__ import print_function
  print(Lines[i], file='Output.txt')
  </code></pre>
  
  <p>and can't get that to work, either. If anyone can explain what I'm doing wrong or offer some suggestions about what I should try instead I would be really grateful. Also, if you have any suggestions for making the search better I would appreciate those as well. I have been using a test file where the string I want to find is the only text on the line, but in my real files the string that I need is still at the beginning of the line but followed by a bunch of other text, so I think the way I have things set up now won't really work, either.</p>
  
  <p>Thanks, and sorry if this is a super basic question!</p>