2015-09-05 107 views
0

我正在记录电压读数与时间。我希望电压低于10进入logfile1.txt,电压高于10进入第二个文件logfile2.txt。以下脚本将10以下的电压写入logfile1.txt中,但对于10以上的电压,则不会写入logfile2.txt中。脚本的底部部分将被忽略。我怎样才能读取第二个日志文件?如何从同一个python程序写入两个单独的日志文件?

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

该程序有两个无限循环。第三个while循环不会被击中?你应该只使用日志包,并添加两个文件处理程序。 –

+0

如果你想保持这个程序没有日志记录,只需在第一个块中打开这两个文件,如下所示:http://stackoverflow.com/a/4617069/4080476 –

+0

谢谢Brian,我会研究你的建议。 – Rico

回答

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 

注意,对于打印到第二个文件的逻辑是比你原来的代码略有不同。我正在使用相当于elif volts >= 10else。如果您的原始代码已经工作,完全没有记录10伏的读数,我猜这是一个疏忽。如果您想要精确的10伏读数而不是第一个文件,可以将< 10更改为<= 10

+0

你的天才,很棒! – Rico

相关问题