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

|| 我正在使用名为
dis
的python模块来分析字节码。默认情况下,“ 0”会将输出发送到屏幕。我想将“ 0”的输出重定向到一个文件,而无需修改“ 0”模块。问题是,在满足某些条件后,我从一个长程序中调用了“ 0”。我举一个例子!
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\')
将所有内容发送到文件。但是,有些语句是主程序的一部分,我希望在程序运行时可以在屏幕上看到这些语句。     
已邀请:
您可以在调用
dis
例程之前和之后设置和重置
sys.stdout
sys.stdout = dis_output_file
dis.dis(method1)
dis.dis(method2)
sys.stdout = sys.__stdout__
sys.__stdout__
始终是指应用程序的实际标准输出。 当然,如果您使用多个线程,则此方法将失败。     

要回复问题请先登录注册