如何从同一个python程序写两个单独的日志文件?

时间:2015-09-05 23:37:55

标签: python logging

我正在记录电压读数与时间的关系。我希望低于10的电压进入logfile1.txt,电压高于10进入第二个文件logfile2.txt。以下脚本将低于10的电压写入logfile1.txt,但对于10以上的电压,没有任何内容写入logfile2.txt。我的脚本的底部部分将被忽略。如何将读数读入第二个日志文件?

    import sys, time, signal
    from time import time, sleep
    from Adafruit_ADS1x15 import ADS1x15

    ADS1115 =0x01
    adc = ADS1x15(ic=ADS1115)

    while True:
        with open('logfile1.txt', 'w') as f:
            while True:
                volts = adc.readADCDifferential01(256, 8)
                print volts
                sleep(1)
                if volts < 10:
                print >> f, time(), (volts)

        with open('logfile2.txt', 'w') as f:
            while True:
                volts = adc.readADCDifferential01(256, 8)
                print volts
                sleep(1)
                if volts > 10:
                     print >> f, time(), (volts)    

1 个答案:

答案 0 :(得分:3)

正在忽略涉及第二个日志文件的代码,因为第一个日志文件的内部循环永远不会结束。要使代码写入两个文件,您需要组合循环。您也可以摆脱最外层的循环:

with open('logfile1.txt', 'w') as f1, open('logfile2.txt', 'w') as f2:
    while True:
        volts = adc.readADCDifferential01(256, 8)
        print volts
        sleep(1)
        if volts < 10:
            print >> f1, time(), volts
        else: # volts >= 10
            print >> f2, time(), volts

请注意,打印到第二个文件的逻辑与原始代码略有不同。我使用的else相当于elif volts >= 10。如果您的原始代码有效,则根本不会记录10伏特的读数,我猜测这是一个疏忽。如果您想要精确的10伏读数转到第一个文件而不是第二个文件,则可以将< 10更改为<= 10