python: выборочное перенаправление stdout в файл

1

Я использую модуль python под названием dis для анализа байт-кода. По умолчанию dis отправит вывод на экран. Я хотел бы, чтобы re- направил вывод 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'), отправляет все в файл. Однако есть некоторые статусы, которые являются частью основной программы, которую я хотел бы видеть на экране, когда программа работает.

Теги:
stdout

1 ответ

5
Лучший ответ

Вы можете установить и reset sys.stdout до и после вызова dis подпрограмм:

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

sys.__stdout__ всегда ссылается на фактический стандартный вывод вашего приложения.

Конечно, если вы используете несколько потоков, этот подход потерпит неудачу.

  • 0
    будет работать это сейчас! Пока работает нормально!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню