我正在记录电压读数与时间的关系。我希望低于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)
答案 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
。