Я хочу використовувати висновок 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
).