【小技巧】python print方法重寫


print方法的參數

print方法的參數:(在python3的命令行執行help(print)就可以看到)

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

將 value 打印到一個輸出流,默認的輸出流為 sys.stdout。

可選參數有:
file: 使用一個文件對象作為輸出目標,默認值為當前輸出流 sys.stdout;
sep: 輸出的多個 value 之間的分隔符,默認為一個空格;
end: 完成所有 value 的輸出之后在其后添加的字符,默認為 \n 換行符;
flush: 布爾值,是否立即刷新緩沖區,即立刻將數據寫入到磁盤文件;
關於flush,還有一點要說,默認情況下,flush 值為 False,這時只有當緩沖區滿,操作系統才會將數據寫入文件中。

而close,也是在內部先調用 flush 方法來刷新緩沖區,再執行關閉操作,這樣即使緩沖區沒有滿,也可以強制寫入數據,保證了數據的完整性。
如果進程意外退出或正常退出時為close文件對象,緩存區的內容將會丟失。

舉例:重寫print方法為log_print

# 重寫log_print方法,加入時間信息
def log_print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):
    print("當前時間:" + datetime.now().strftime('%Y-%m-%d %H:%M:%S')) # 這樣每次調用log_print()的時候,會先輸出當前時間,然后再輸出內容
    print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

用logging

import logging
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: \
      %(message)s', level=logging.INFO)

logging.info('begin...') 
# 輸出樣式:
# 2021-01-05 16:23:58,046 - main.py[line:92] - INFO:      begin...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM