【小技巧】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...