現在、水質データを5秒ごとに取得し、1分毎にcsvを生成するプログラムを作成しております。
以下のようなプログラムを作成し、実行したところ、
画像のように、データが改行されず横に向かってデータが書き込まれるようになってしまいました。
[date, DO[mg/L], watertemp[C]]
[2022/02/14 10:00:00, 6.62, 20.00]
[2022/02/14 10:00:05, 6.73, 20.00]
...
のように、csvを測定データごとに改行できるようにするには
どのようにすればよいのでしょうか。
よろしくお願いいたします。
python.py
1import io 2from os import replace 3import sys 4import fcntl 5import time 6import datetime 7import csv 8import copy 9import string 10from AtlasI2C import ( 11 AtlasI2C 12) 13from w1thermsensor import W1ThermSensor 14 15#Atlasセンサの設定 16def print_devices(device_list, device): 17 for i in device_list: 18 if(i == device): 19 print("--> " + i.get_device_info()) 20 else: 21 print(" - " + i.get_device_info()) 22 23 24def get_devices(): 25 device = AtlasI2C() #デバイスの情報 26 device_address_list = device.list_i2c_devices() #デバイスのアドレス(97,99,100) 27 device_list = [] 28 29 for i in device_address_list: 30 device.set_i2c_address(i) 31 response = device.query("I") 32 moduletype = response.split(",")[1] 33 response = device.query("name,?").split(",")[1] 34 device_list.append(AtlasI2C(address = i, moduletype = moduletype, name = response)) 35 return device_list 36 37def main(): 38 39 device_list = get_devices() 40 #print('devicelist:',device_list) 41 42 device = device_list[0] 43 #print('device',device) 44 45 #print_devices(device_list, device) 46 47 try: 48 while True: 49 #現在時刻取得 50 now = datetime.datetime.today() 51 #csvファイルの名前設定 52 filename = "TestRaspi_" + now.strftime("%Y%m%d%H%M%S") + ".csv" 53 54 #ここで1日に設定 55 minute = now.strftime("%M") 56 #変数の初期化 57 filetime = minute 58 59 with open(filename,'a',newline='') as f : #csvファイルの生成 60 writer = csv.writer(f, lineterminator='\n') #csvの書き出し 61 #1行目:見出し 62 writer.writerow(["date", "DO[mg/L]", "watertemp[C]"]) 63 64 while (minute == filetime): #csvに書き込むデータ 65 for dev in device_list: 66 dev.write("R") #測定値出力コマンド 67 68 #現在時刻 69 Datetime_Now = datetime.datetime.today() 70 date = (Datetime_Now.strftime('%Y/%m/%d %H:%M:%S')) 71 #測定値の表示 72 # ex) Success pH 99 : 3.625 73 for dev in device_list: 74 dev_read = dev.read() 75 #replace()メゾッドで余計な文字を消して数値だけ表示 76 replace = dev_read.replace('Success','').replace('DO','')\ 77 .replace('97','').replace('pH','').replace('99','')\ 78 .replace('EC','').replace('100','').replace(' ','').replace(':','') 79 result = (replace[24:29]) 80 #水温センサ 81 sensor = W1ThermSensor() 82 water_temperature = sensor.get_temperature() 83 84 #csvに書き込むデータ 85 data = [date,result,water_temperature] 86 writer.writerow(data) 87 #ターミナルに出力 88 print('--------------------------------') 89 print(date) 90 print(dev_read) 91 print("water-temperature:{0:.2f}".format(water_temperature)) 92 93 time.sleep(5) #5秒に設定 94 95 #1日毎にcsvファイルを生成 96 filetime = Datetime_Now.strftime("%M") 97 98 except KeyboardInterrupt: # catches the ctrl-c command, which breaks the loop above 99 print("Continuous polling stopped") 100 101 102if __name__ == '__main__': 103 main()

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。