Bei meiner Arbeit musste ich kontinuierlich Daten aufnehmen → in eine CSV-Datei schreiben und ein Protokoll erstellen. Ich habe versucht, es als Memorandum zusammenzufassen.
OS:Raspbian Buster 10 Verwendete Software: Code-OSS (Headmelted) 1.44.0
Erstellen Sie eine leere CSV-Datei in derselben Hierarchie wie das Programm und schreiben Sie das Protokoll hinein. Fügen Sie zuerst das Datum hinzu, z. B. "AD / Monat / Tag Stunde: Minute: Sekunde, (Daten 1), (Daten 2) ..." Listen Sie die Daten, hinter denen Sie aufzeichnen möchten, durch Kommas getrennt auf.
Python
csvWrite.py
import csv
import datetime
n = 0
try:
with open('logger.csv', 'a') as f:
#Schreibe 10 mal ein Protokoll
while n < 10:
#Terminzeit
now = datetime.datetime.now()
nowTime = '{0:%Y/%m/%d %H:%M:%S}'.format(now)
#Datengruppe
data1 = 'data1'
data2 = 'data2'
data3 = 'data3'
writeStr = nowTime + ',' + data1 + ',' + data2 + ',' +data3
writeStr = writeStr.split(',')
#Bestätigung der geschriebenen Zeichenkette
#Beispiel:'2020/03/06 15:00:00','data1','data2','data3'
print('writeStr = %s' % writeStr)
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(writeStr)
n += 1
except FileNotFoundError as e:
print(e)
except csv.Error as e:
print(e)
csvWrite.c
#include <stdio.h>
#include <time.h>
FILE *fp;
char *fname = "logger.csv";
struct tm tm;
int main(void)
{
struct tm tm;
time_t t;
//Datengruppe
char data1[] = "data1";
char data2[] = "data2";
char data3[] = "data3";
//Öffnen Sie die Datei (falls sie nicht vorhanden ist, wird sie automatisch erstellt)
fp = fopen(fname, "a");
if(fp == NULL){
printf("file can't open¥n");
return -1;
}
//Schreibe 10 mal ein Protokoll
for(int n = 0; n < 10; n++){
//Terminzeit
t = time(NULL);
localtime_r(&t, &tm);
fprintf(fp, "\"%04d/%02d/%02d %02d:%02d:%02d\",",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
fprintf(fp, "\"%s\",\"%s\",\"%s\"\n", data1, data2, data3);
//Bestätigung der geschriebenen Zeichenkette
//Beispiel:"2020/03/06 15:00:00","data1","data2","data3"
printf("writeStr = \"%04d/%02d/%02d %02d:%02d:%02d\",\"%s\",\"%s\",\"%s\"\n",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec, data1, data2, data3);
}
fclose(fp);
return 0;
}
Wenn ich IoT entwickle, hinterlasse ich ein Protokoll auf dem Server, kann aber keine Verbindung zum Internet herstellen Das Gefühl der Verzweiflung, wenn das Protokoll während dieser Zeit verschwindet, ist erstaunlich. Daher möchte ich eine CSV-Datei auf der SD-Karte erstellen und auf diese Weise sorgfältig speichern.
Recommended Posts