【问题标题】:Where is the secret python logfile? [duplicate]秘密 python 日志文件在哪里? [复制]
【发布时间】:2015-12-11 01:35:29
【问题描述】:

使用下面显示的代码,我将时间与电压读数记录到日志文件中。我注意到如果我在程序运行时“打开”日志文件,它不会显示任何新数据。它仅显示上次运行程序时 logfile.txt 中已经存在的数据。为了让新数据显示在 logfile.txt 中,我必须停止正在运行的程序(cntl-C),然后重新打开 logfile.txt。新数据必须记录在某处。为什么日志文件中不显示实时数据?

    import sys, time, signal

    with open('logfile.txt', 'a') as f:
        while True:
            volts = adc.read(256, 8)
            print >> f, time(), volts 

【问题讨论】:

  • 嗯,它是缓冲的,所以要么使用open('logfile.txt', 'a', 0)以非缓冲模式打开文件,要么每次你想从文件中读取“实时”数据时刷新文件(f.flush())从其他地方。
  • 你用什么程序打开文件?是否意味着更新文件时更新?正在写入多少数据? Python 的记录器将刷新每个日志事件。但操作系统可能会缓冲文件流。
  • 我使用鼠标手动打开日志文件,然后在文件管理器中找到 if 后单击其图标。
  • 文件不大,大约 10 KiB。
  • @Rico 我的意思是显示文件内容的程序。当文件内容改变时它会自动重新加载文件吗?

标签: python


【解决方案1】:

输出存储在内存中的缓冲区中,直到缓冲区已满,或者您关闭文件,或者您明确告诉它这样做,才会将其写入磁盘。在从 RAM 中刷新缓冲区之前,您不会看到新的输出。

查找 File.flush() 方法;我想这就是你需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多