How to write output of terminal to file

You can redirect the output to a file using > in terminal:

python your_script.py > output.txt

IMO this is the correct pythonic way, with-out relying on the system shell:

import sys
f = open("test.out", 'w')
sys.stdout = f
print "test"
f.close()

In python you can change what is the default stdout object. You just need to assign whatever you want to sys.stdout. I think the object just need to have a write method defined (not absolutely sure, though).

This would do:

import sys
f = open("test.out", 'w')
sys.stdout = f

i=0
while i<10:
  a=raw_input('Write a number')
  print 'Result%s'%str(2*a)
  i+=1

f.close()

It's essentially the same what 0605002 suggests for systems that support syntax he uses, but realized in pure python and should be more portable.

Even more pythonic way, as per comment suggestion:

import sys

with open("test.out", 'w') as f:
  sys.stdout = f

  i=0
  while i<10:
    a=raw_input('Write a number')
    print 'Result%s'%str(2*a)
    i+=1

Of course you can refactor your "client code" and make it a function or something.

Tags:

Python