title: How to open a file using the open with statement
body: <p>I'm looking at how to do file input and output in Python. I've written the following code to read a list of names (one per line) from a file into another file while checking a name against the names in the file and appending text to the occurrences in the file. The code works. Could it be done better? </p>
  
  <p>I'd wanted to use the <code>with open(...</code> statement for both input and output files but can't see how they could be in the same block meaning I'd need to store the names in a temporary location. </p>
  
  <pre><code>def filter(txt, oldfile, newfile):
      '''\
      Read a list of names from a file line by line into an output file.
      If a line begins with a particular name, insert a string of text
      after the name before appending the line to the output file.
      '''
  
      outfile = open(newfile, 'w')
      with open(oldfile, 'r', encoding='utf-8') as infile:
          for line in infile:
              if line.startswith(txt):
                  line = line[0:len(txt)] + ' - Truly a great person!\n'
              outfile.write(line)
  
      outfile.close()
      return # Do I gain anything by including this?
  
  # input the name you want to check against
  text = input('Please enter the name of a great person: ')    
  letsgo = filter(text,'Spanish', 'Spanish2')
  </code></pre>