Я хочу використовувати висновок pprint, щоб показати складну структуру даних, але я хотів би вивести його за допомогою модуля реєстрації, а не stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Я хочу використовувати висновок pprint, щоб показати складну структуру даних, але я хотів би вивести його за допомогою модуля реєстрації, а не stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint.pformat()була на цій сторінці.
Відповіді:
Використовуйте, pprint.pformatщоб отримати рядок, а потім надішліть його до вашого журналу.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
AttributeError: 'function' object has no attribute 'pformat'уявляю, чому?
from pprint import pprint,pformat тоді мені було потрібноlogging.debug((pformat(stuff))
Наведене вище рішення не зовсім вирізало його для мене, оскільки я також використовую форматор для додавання імені та рівня під час реєстрації. Це виглядає трохи неохайно:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
Може бути і більш елегантне рішення, але це:
for line in pprint.pformat(ds).split('\n'):
logging.debug(line)
видає щось трохи приємніше:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
\nсимвол у pformat. Принаймні, таким чином блок є разом.
pprint( {}, stream ), але виявив це досить незручно. я міг би подумати, що щось подібнеspprintмогло бути приємнішим ніжpformat(як уc).