【小技巧】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...
posted @ 2020-08-19 16:57  Yanqiang  阅读(3508)  评论(0编辑  收藏  举报