iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Python】Python日志无延迟实
    我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获。 以下是查到的解决方案(亲测可行): open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模...
    99+
    2023-01-31
    日志 Python
  • Python延迟打印字符
    我想让python打印类似“正在加载。。。”,每个句号打印出来与它们之间的睡眠时间0.5秒间隔实现方法:        #!/bin/env python    # -*- coding:utf-8 -*-    import sys   ...
    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实现延迟操作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日志
    log4py.py日志重构类 import datetime   import sys   import traceback   import codecs   import types   import logging import os...
    99+
    2023-01-31
    日志 python
  • python延迟N秒执行一次
    #!/usr/bin/python #coding=utf-8 ''' Created on Nov 7, 2015 python定时任务测试 ''...
    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 实时日志平台 Sentry
    简介     Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建,其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。。Sentry 可以帮助你将 Python 程序的所有 exception 自动记录...
    99+
    2023-01-31
    实时 平台 日志
  • python读取日志
    场景:周一到周五早上6点半检查日志中的关键字,并发送相应的成功或者失败短信 用python27版本实现 日志内容如下: [16-08-04 06:30:39] Init Outer: StkID:20205 Label:7110 ...
    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 日志封装
    日志功能描述: 写python项目时,需要用到日志类,需求为:日志信息可配置,提供几种类型不同的配置,并且日志既可以写到文本也可以写到数据库中。 实现时日志类直接使用python的logging,配置信息写到配置文件loggin...
    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日志级别
    import logging logging.basicConfig(level=logging.DEBUG, format=’%(asctime)s %(filename)s[line:%(...
    99+
    2023-01-31
    级别 日志 python
  • python打印日志实例分析
    这篇“python打印日志实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python打印日志实例分析”文章吧。一、必...
    99+
    2023-07-02
  • python实现磁盘日志清理
    一、描述:以module的方式组件python代码,在磁盘文件清理上复用性更好二、达到目标:     清空过期日志文件,清理掉超过自定大小日志文件三、原码#!/usr/bin/env python # -*- coding: utf-8 -...
    99+
    2023-01-31
    磁盘 日志 python
  • python中用logging实现日志滚
    用python中的logging库实现日志滚动和过期日志删除。 logging库提供了两个可以用于日志滚动的class(可以参考https://docs.python.org/2/library/logging.handler...
    99+
    2023-01-31
    中用 日志 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作