返回顶部
首页 > 资讯 > 后端开发 > Python >【Python】Python日志无延迟实
  • 637
分享到

【Python】Python日志无延迟实

日志Python 2023-01-31 05:01:58 637人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获。 以下是查到的解决方案(亲测可行): open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模

我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获。

以下是查到的解决方案(亲测可行):


open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模式。 
但是用二进制模式打开这个文件,并且把要写入的信息转换byte -like如下。

with open("test.txt",'wb',buffering=0) as f:
#wb是写模式加二进制模式
    f.write(b"hello!")在字符串前加b,转换成二进制

如果没用二进制打开文件会提示ValueEorror:

没把字符串转成二进制会提示:TypeError: a bytes-like object is required, not ‘str’

测试


class Logger(object):
    def __init__(self, log_path="default.log"):
        self.terminal = sys.stdout
        # self.log = open(log_path, "w+")
        self.log = open(log_path, "wb", buffering=0)

    def print(self, message):
        self.terminal.write(message + "\n")
        self.log.write(message.encode('utf-8') + b"\n")

    def flush(self):
        self.terminal.flush()
        self.log.flush()

    def close(self):
        self.log.close()

报错1:TypeError: can't concat str to bytes

报错2:write需要str对象,无法写入bytes对象(大意)

这是因为:

(1)log.write需要写入bytes对象,这里没问题。但是encode返回的是bytes型的数据,不可以和str相加,需要将‘\n’前加b。

(2)terminal.write函数参数需要为str类型,转化为str。

改为:


    def print(self, message):
        self.terminal.write(message + "\n")
        self.log.write(message.encode('utf-8') + b"\n")

运行成功!

--结束END--

本文标题: 【Python】Python日志无延迟实

本文链接: https://www.lsjlt.com/news/188416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【Python】Python日志无延迟实
    我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获。 以下是查到的解决方案(亲测可行): open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模...
    99+
    2023-01-31
    日志 Python
  • python检测网络延迟
    #!/usr/bin/env python # coding: utf-8 # coding: cp950 ''' Create Date: 2012-11-06 Version: 1.0 Description: Detection ...
    99+
    2023-01-31
    网络 python
  • Python延迟打印字符
    我想让python打印类似“正在加载。。。”,每个句号打印出来与它们之间的睡眠时间0.5秒间隔实现方法:        #!/bin/env python    # -*- coding:utf-8 -*-    import sys   ...
    99+
    2023-01-31
    字符 Python
  • python之如何实现延迟操作
    目录python实现延迟操作Python延迟加载问题总结python实现延迟操作 python 想实现延迟的操作是需要应用time ,然后在使用time的sleep 方法 比如我想写...
    99+
    2023-05-18
    python实现延迟操作 python延迟操作 python延迟
  • python之怎么实现延迟操作
    python实现延迟操作python 想实现延迟的操作是需要应用time ,然后在使用time的sleep 方法比如我想写一个延迟1秒打印一次的操作import time for i in range(0, 10): time.sl...
    99+
    2023-05-16
    Python
  • 解决python print延迟问题
    最近写了几个python脚本,在用print输出的时候,都有一个很讨厌的问题,就是print的输出被延迟了,什么情况呢,类似这样 1 import os 2 print ‘first print   3 os.system('./seco...
    99+
    2023-01-31
    python print
  • python如何实施类似延迟的呼叫
    这篇文章给大家分享的是有关python如何实施类似延迟的呼叫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实施类似延迟的呼叫Golang中有一种延迟通话的机制。 关键字为defer,如下所示myfunc的调用将在...
    99+
    2023-06-27
  • Python类属性的延迟计算
    所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算。 优点 构造一个延迟计算属性的主要目的是为了提升性能 实现 ...
    99+
    2022-06-04
    类属 Python
  • python延迟N秒执行一次
    #!/usr/bin/python #coding=utf-8 ''' Created on Nov 7, 2015 python定时任务测试 ''...
    99+
    2023-01-31
    python
  • python日志
    log4py.py日志重构类 import datetime   import sys   import traceback   import codecs   import types   import logging import os...
    99+
    2023-01-31
    日志 python
  • python如何实现类似defer的延迟调用
    这篇文章给大家分享的是有关python如何实现类似defer的延迟调用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现类似 defer 的延迟调用在 Golang 中有一种延迟调用的机制,关键字是 defer,...
    99+
    2023-06-27
  • Python 日志(Log)
    日志? 日志,就是用来记录程序运行的时候都发生了什么事。 事件按严重程度划分level 事件内容: 时间 位置 事件的严重程度--level 内容 用logging模块实现 logging 模块 日志级别(level):DEB...
    99+
    2023-01-30
    日志 Python Log
  • Python性能提升之延迟初始化
    所谓类属性的延迟计算就是将类的属性定义成一个property,只在访问的时候才会计算,而且一旦被访问后,结果将会被缓存起来,不用每次都计算。构造一个延迟计算属性的主要目的是为了提升性能 property 在...
    99+
    2022-06-04
    初始化 性能 Python
  • Python 实时日志平台 Sentry
    简介     Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建,其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。。Sentry 可以帮助你将 Python 程序的所有 exception 自动记录...
    99+
    2023-01-31
    实时 平台 日志
  • python 日志封装
    日志功能描述: 写python项目时,需要用到日志类,需求为:日志信息可配置,提供几种类型不同的配置,并且日志既可以写到文本也可以写到数据库中。 实现时日志类直接使用python的logging,配置信息写到配置文件loggin...
    99+
    2023-01-31
    日志 python
  • python读取日志
    场景:周一到周五早上6点半检查日志中的关键字,并发送相应的成功或者失败短信 用python27版本实现 日志内容如下: [16-08-04 06:30:39] Init Outer: StkID:20205 Label:7110 ...
    99+
    2023-01-31
    日志 python
  • python 日志记录
    周海汉 /文 http://blog.csdn.net/ablo_zhou 2010.3.20   一、我写的log4py介绍   在写<汉字大全 >时,自己实现了简单的log系统: #!/bin/env python #...
    99+
    2023-01-31
    日志 python
  • python日志解析
    Python字典的setdefault()方法 setdefault(key[, default]) If key is in the dictionary, return its value. If not, insert ke...
    99+
    2023-01-31
    日志 python
  • python日志级别
    import logging logging.basicConfig(level=logging.DEBUG, format=’%(asctime)s %(filename)s[line:%(...
    99+
    2023-01-31
    级别 日志 python
  • python 实时遍历日志文件
    open 遍历一个大日志文件 使用 readlines() 还是 readline() ? 总体上 readlines() 不慢于python 一次次调用 readline(),因为前者的循环在...
    99+
    2022-06-04
    遍历 实时 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作