Log to a file without modifying code, with just one line
$ python yourcode.py > tmp.log
但這樣有個問題:要麼不導出,要麼全導出。如果你只想導出一部分到文件,怎麼辦?
用 logging 嗎?嫌麻煩。
print 加上 file 參數呢?倒是可以,不過每個 print 都加也很麻煩。
就不能簡單點嗎,比如添加一行代碼,把某個函數或代碼段內的 print 輸出存到文件?
因為覺得需要這個功能,所以就寫了一個:https://github.com/laike9m/f
用起來實在太簡單了,沒有任何學習成本。
- 一行代碼把函數內的 print 輸出存入文件:
import f@f # 把 print() 的輸出存入 tmp.log,文件打開模式為 wdef inner(): print(whatever)
- 指定文件名和打開模式:
# 把 print() 的輸出存入 important.log,文件打開模式為 a@f(filename=important.log, mode=a)def inner(): print(whatever)
- 上下文管理器這麼好用,我們怎麼能不支持?
with f: print(whatever)with f(filename=important.log, mode=a): print(whatever)
- 想同時輸出到文件和控制台,當然也沒問題:
@f(filename=important.log, mode=a, stdout=True)def inner(): print(whatever)with f(filename=important.log, mode=a, stdout=True): print(whatever)
推薦閱讀:
※爬蟲帶你逛知乎(下篇)
※黃哥分析如何用python解決特殊文本文件問題
※如何看待將Python代碼轉換成Go代碼並進一步編譯的 Grumpy 項目?
※Python函數的參數列表中嵌套格式『[ [, [, ]]]』該如何理解,和一般的位置參數表示的區別有哪些?