title: Python 2.7: Print to File
body: <p>Why does trying to print directly to a file instead of <code>sys.stdout</code> produce the following syntax error:</p>
  
  <pre><code>Python 2.7.2+ (default, Oct  4 2011, 20:06:09)
  [GCC 4.6.1] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  &gt;&gt;&gt; f1=open('./testfile', 'w+')
  &gt;&gt;&gt; print('This is a test', file=f1)
    File "&lt;stdin&gt;", line 1
      print('This is a test', file=f1)
                              ^
  SyntaxError: invalid syntax
  </code></pre>
  
  <p>From help(__builtins__) I have the following info:</p>
  
  <pre><code>print(...)
      print(value, ..., sep=' ', end='\n', file=sys.stdout)
  
      Prints the values to a stream, or to sys.stdout by default.
      Optional keyword arguments:
      file: a file-like object (stream); defaults to the current sys.stdout.
      sep:  string inserted between values, default a space.
      end:  string appended after the last value, default a newline.
  </code></pre>
  
  <p>So what would be the right syntax to change the standard stream print writes to?</p>
  
  <p>I know that there are different maybe better ways to write to file but I really don't get why this should be a syntax error...</p>
  
  <p>A nice explanation would be appreciated!</p>