একটি জটিল ডেটা স্ট্রাকচার দেখানোর জন্য আমি পিপ্রিন্টের আউটপুট ব্যবহার করতে চাই, তবে স্টডআউটের পরিবর্তে লগিং মডিউলটি ব্যবহার করে এটি আউটপুট দিতে চাই।
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as 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
চরিত্র যুক্ত করা। কমপক্ষে এই পথে ব্লকটি একসাথে।
pprint( {}, stream )
, তবে এটি দেখতে আরও বিশ্রী। আমি ভাবতাম এমন কিছু ভালোspprint
লাগার চেয়ে ভাল লাগতpformat
(এর মতোc
)।