получить все строки продолжения в traceback - PullRequest
3 голосов
/ 02 октября 2011

Возможно ли получить все строки строки продолжения в трассировке?

Пример:

#! /usr/bin/env python
def function_with_long_name(foo, bar):
  raise Exception('problem?')
function_with_long_name('very_important_value',
  'meaningless_value')

Вывод:

$ ./test.py 
Traceback (most recent call last):
  File "./test.py", line 5, in <module>
    'meaningless_value')
  File "./test.py", line 3, in function_with_long_name
    raise Exception('problem?')
Exception: problem?

Обратите внимание, что он печатаеттолько последняя строка строки продолжения.

Я бы хотел, чтобы все строки линии продолжения были примерно такими:

$ ./test.py 
Traceback (most recent call last):
  File "./test.py", line 5, in <module>
    function_with_long_name('very_important_value',
      'meaningless_value')
  File "./test.py", line 3, in function_with_long_name
    raise Exception('problem?')
Exception: problem?

Возможно ли это?

Я посмотрел на модуль traceback, но возвращаемые им значения уже обрезаны.

Пример:

#! /usr/bin/env python
import traceback
def function_with_long_name(foo, bar):
  print traceback.extract_stack()
function_with_long_name('very_important_value',
  'meaningless_value')

Вывод:

$ ./test.py 
[('./test.py', 6, '<module>', "'meaningless_value')"), ('./test.py', 4, 'function_with_long_name', 'print traceback.extract_stack()')]

1 Ответ

1 голос
/ 02 октября 2011

Кто-то, кажется, только что открыл Python выпуск 12458 об этом. Предлагаю вам следовать там.

...