python:stdout到文件的选择性重定向

时间:2011-05-26 08:20:23

标签: python stdout

我正在使用名为dis的python模块来分析字节码。默认情况下,dis会将输出发送到屏幕。我想在不修改dis模块的情况下将dis的输出重定向到文件。问题是,在某些条件成立后,我会在长程序中调用dis。我举个例子!

class foo(object):

   def method1():
      print 'something'
      name = 6
      print name

class boo(object):

    def method1():
       print 'nothing'
       name = 10
       print name

import dis
# other statements
if foo.method1.im_func.func_code.co_code != boo.method1.im_func.func_code.co_code:
       dis.dis(method1) # would like to redirect output to a file
       dis.dis(method2)  # would like to redirect output to a file
# other statements

使用sys.stdout = open('file', 'w')将所有内容发送到文件。但是,有一些声明是我希望在程序运行时在屏幕上打印的主程序的一部分。

1 个答案:

答案 0 :(得分:5)

您可以在调用sys.stdout例程之前和之后设置和重置dis

sys.stdout = dis_output_file
dis.dis(method1)
dis.dis(method2)
sys.stdout = sys.__stdout__

sys.__stdout__总是指应用程序的实际标准输出。

当然,如果您使用多个线程,这种方法将失败。