我正在尝试从串行端口读取数据并将其写入CSV文件,我还希望在00:00:00关闭该文件并自动创建另一个CSV文件以写入该文件。我尝试使用“datetime”模块和“if”条件,但没有结果,它没有进入条件,请帮助我
import serial.tools.list_ports
import csv
import datetime
import os.path
import os
def generateReport():
day_counter = 1
header_list = ['DateTime', 'Pressure_Inside', 'Pressure_outside','DeltaP',
'Temperature_inside', 'Temperature_outside', 'DeltaT', 'Humidity_inside',
'Humidity_outside', 'DeltaH']
serialInst = serial.Serial()
portVar = getPort()
serialInst.port = "Add a port"
serialInst.open()
isRunning = True
while isRunning:
current_hour = datetime.datetime.now().strftime("%H:%M:%S")
date = datetime.datetime.now().strftime("%Y-%m-%d")
report_name = "Report_" + date + "_" + str(day_counter) + ".csv"
try:
if serialInst.in_waiting:
packet = serialInst.readline()
decoded_packet = packet.decode('utf')
initial_string = decoded_packet
splited_string = initial_string.split(";")
print(splited_string)
report_folder = "Add a folder"
if os.path.isfile(report_folder + report_name):
with open(report_folder + report_name, "a", newline = "")as f:
now = datetime.datetime.now().strftime("%Y-%m-%d-%H:%M:%S")
writer = csv.writer(f, delimiter=",")
writer.writerow([now, splited_string[0], splited_string[1], splited_string[2], splited_string[3], splited_string[4], splited_string[5], splited_string[6], splited_string[7], splited_string[8])
if current_hour == stop_hour:
print("A NEW REPORT WAS GENERATED WITH SUCCESS")
f.close()
day_counter += 1
else:
print("CREATE NEW REPORT")
with open(report_folder + report_name, "w", newline="")as f:
writer = csv.writer(f, delimiter=",")
writer.writerow(headerList)
except KeyboardInterrupt:
print("Keyboard Interrupt")
isRunning = False
def run():
generateReport()
run()
`
无需深入了解代码的细节,您可以执行两个循环。外部循环基本上永远运行,而内部循环每天都会中断。大概是这样的:
编辑:下面是一个基于分钟而非天的示例
相关问题 更多 >
编程相关推荐