Так можно делать, только в приложениях, который никогда не будет поддерживать опасный психопат, который знает где вы живёт.
Потому что потом этот код может выполняться в 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__