我正在使用python的模块来调用dis字节码.默认情况下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
Run Code Online (Sandbox Code Playgroud)
使用sys.stdout = open('file', 'w')将所有内容发送到文件.但是,有一些声明是我希望在程序运行时在屏幕上打印的主程序的一部分.
您可以sys.stdout在调用dis例程之前和之后设置和重置:
sys.stdout = dis_output_file
dis.dis(method1)
dis.dis(method2)
sys.stdout = sys.__stdout__
Run Code Online (Sandbox Code Playgroud)
sys.__stdout__ 始终指的是您的应用程序的实际标准输出.
当然,如果您使用多个线程,这种方法将失败.
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |