【问题标题】:Is it possible to create a log file in the terminal in python?是否可以在 python 的终端中创建日志文件?
【发布时间】:2013-10-31 00:18:06
【问题描述】:

我有一个 Python 程序,每秒读取大约三个电压读数。我通常从 Linux 桌面 Lxterminal 运行它。然后稍后在 Pylab 中使用电压与时间的关系来创建绘图。然而,当它需要电压读数时,它有时会暂停,这会在数据中产生间隙,从而破坏测试。这些间隔持续 1 到 6 秒。我注意到暂停是由我的程序的“打印>>日志文件,时间(),(伏特)”脚本引起的。但是,如果我删除日志文件脚本并从命令提示符(又名“终端”、“控制台”、“外壳”)运行它,这些暂停就不存在了。 当我从命令提示符运行程序时,它会打印出显示在监视器上的一长串电压,但没有用于创建绘图的日志文件。我的问题是,有没有办法将这些电压存储在终端外壳中,然后稍后在 Pylab 中使用这些漂亮的无间隙电压?我试过了:

 list = time(), volts

但我不知道下一步该做什么,或者我是否朝着正确的方向前进。这是我的程序。

import time, sys, signal, math    
from Adafruit_ADS1x15 import ADS1x15    
from time import time, sleep    
def signal_handler(signal, frame):    
    sys.exit(0)    
signal.signal(signal.SIGINT, signal_handler)    
ADS1115 = 0x01    
adc = ADS1x15(ic=ADS1115)    

while True:    
   voltsdiff = adc.readADCDifferential01(4096, 8)    
   logfile = open('logfile.txt', 'a')    
   print >> logfile, time(), voltsdiff    
   logfile.close()    
   sleep(0.25)  

【问题讨论】:

    标签: python file logging terminal


    【解决方案1】:

    看看logging 模块

    import logging
    
    logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
    
    logging.debug(yourdataToSaveInFile)
    

    无需在每次循环迭代时打开和关闭文件。

    with open('logfile.txt', 'a') as f:
        while True:    
           voltsdiff = adc.readADCDifferential01(4096, 8)    
           print >> f, time(), voltsdiff    
           sleep(0.25)
    

    【讨论】:

    • 所有东西都有一个python模块:')
    • 非常感谢,我试试看。
    • 好吧,logging.basicConfig 也不起作用。它与我的 print>>logfile 具有相同的数据间隙。显示器上显示的内容是否存储在任何地方?难道我的小树莓派电脑根本不能胜任这项工作吗?
    • 导入时间、系统、信号、数学
    • 我的程序现在贴在上面了。
    猜你喜欢
    • 2010-11-27
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多