Tôi muốn sử dụng đầu ra của pprint để hiển thị cấu trúc dữ liệu phức tạp, nhưng tôi muốn xuất nó bằng mô-đun ghi nhật ký thay vì stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Tôi muốn sử dụng đầu ra của pprint để hiển thị cấu trúc dữ liệu phức tạp, nhưng tôi muốn xuất nó bằng mô-đun ghi nhật ký thay vì stdout.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
pprint.pformat()
đã ở trên trang đó.
Câu trả lời:
Sử dụng pprint.pformat
để lấy một chuỗi, sau đó gửi nó đến khung ghi nhật ký của bạn.
from pprint import pformat
ds = [{'hello': 'there'}]
logging.debug(pformat(ds))
AttributeError: 'function' object has no attribute 'pformat'
biết tại sao không?
from pprint import pprint,pformat
sau đólogging.debug((pformat(stuff))
Giải pháp ở trên không hoàn toàn cắt được nó đối với tôi vì tôi cũng đang sử dụng trình định dạng để thêm tên và tên cấp khi ghi nhật ký. Nó trông hơi lộn xộn:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbb',
'cccccccccccccccccccc',
'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
Có thể có một giải pháp thanh lịch hơn, nhưng điều này:
for line in pprint.pformat(ds).split('\n'):
logging.debug(line)
tạo ra một cái gì đó đẹp hơn một chút:
__main__ : DEBUG : ['aaaaaaaaaaaaaaaaaaaa',
__main__ : DEBUG : 'bbbbbbbbbbbbbbbbbbbb',
__main__ : DEBUG : 'cccccccccccccccccccc',
__main__ : DEBUG : 'dddddddddddddddddddd']
__main__ : DEBUG : Some other logging text
\n
ký tự bổ sung trong pformat. Ít nhất theo cách này, khối là với nhau.
pprint( {}, stream )
, nhưng thấy nó khá khó xử. tôi đã nghĩ một cái gì đó giống nhưspprint
có thể đã đẹp hơnpformat
(như trongc
).