print 跟 log
2 min readAug 1, 2017
話說寫 command line tools 的時候,除了 argparse
以外,很多時候其實很懶得用 logging
開 log 來用….(畢竟小工具嘛… 光是 logging
的 config 大概就佔掉快 20 行了QQ)
這種時候單純的 print
就很好用惹,預設會寫到 sys.stdout ,有需要吐 error 的時候就可以用 file=sys.stderr
(寫到 stderr 可以避免用 >
存 log 的時候看不到 error 之類der)
print
的 file
基於 file-like object 的特性拿來取代 f.write()
也非常的好用; f.write()
預設是不會換行的,在逐行寫入又要換行的情況下,會寫出像 f.write(line + os.linesep)
這種 ….,用 print
的寫法會像是 print(line, file=f)
。(其實沒有哪個比較好,純粹就是個人喜好(?))
最後一個是 verbose
,用 logging
的話直接改 log level 就好了;單純用 print
的話,蠻容易會寫出像是:
if verbose:
print(msg)
這種有點佔空間的 code (?),換個寫法可以像這樣:
# output = sys.stdout if verbose else io.StringIO
print(msg, file=output)
這樣就可以避掉很多需要判斷 verbose
再輸出的情況惹~
沒惹,掰。