Como redirecionar a saída 'print' para um arquivo usando python?

Eu quero redirecionar a impressão para um arquivo .txt usando python. Eu tenho um loop 'for', que 'imprimirá' a saída para cada um dos meus arquivos .bam, enquanto eu quero redirecionar TODAS essas saídas para um arquivo. Então eu tentei colocar

 f = open('output.txt','w'); sys.stdout = f

no início do meu script. No entanto, não recebo nada no arquivo .txt. Meu script é:

#!/usr/bin/python

import os,sys
import subprocess
import glob
from os import path

f = open('output.txt','w')
sys.stdout = f

path= '/home/xug/nearline/bamfiles'
bamfiles = glob.glob(path + '/*.bam')

for bamfile in bamfiles:
    filename = bamfile.split('/')[-1]
    print 'Filename:', filename
    samtoolsin = subprocess.Popen(["/share/bin/samtools/samtools","view",bamfile],
                                  stdout=subprocess.PIPE,bufsize=1)
    linelist= samtoolsin.stdout.readlines()
    print 'Readlines finished!'
    ........print....
    ........print....

Então qual é o problema? Alguma outra maneira além deste sys.stdout?

Preciso do meu resultado:

Filename: ERR001268.bam
Readlines finished!
Mean: 233
SD: 10
Interval is: (213, 252)

questionAnswers(11)

yourAnswerToTheQuestion