Перенаправление системных потоков (на примере stdout) в python

Так можно делать, только в приложениях, который никогда не будет поддерживать опасный психопат, который знает где вы живёт.

Потому что потом этот код может выполняться в ipython notebook, или другим образом, использующим нестандартный вывод.

Применять этот подход можно только когда делаешь что-то в рамках хакатона или совсем уж под себя, потому что иначе людям придётся это переписывать.

output = out.split('_')[0] + '_funnel.out'

o = open(output,'a')

#Saving pointer to native stdout
saveout = sys.stdout
sys.stdout = open(output, 'w')

print_something_using_print()
print "one more line"

#Returning ouput back to sys
sys.stdout = saveout

sys.stdout =sys.__stdout__

 

Kirill