Dans mon travail, je devais prendre des données en continu → les écrire dans un fichier CSV et prendre un journal. J'ai essayé de le résumer sous forme de mémorandum.
OS:Raspbian Buster 10 Logiciel utilisé: Code-OSS (headmelted) 1.44.0
Créez un fichier CSV vide dans la même hiérarchie que le programme et écrivez-y le journal. Ajoutez d'abord la date, par exemple "AD / mois / jour heure: minute: seconde, (données 1), (données 2) ..." Listez les données que vous souhaitez enregistrer derrière, séparées par des virgules.
Python
csvWrite.py
import csv
import datetime
n = 0
try:
with open('logger.csv', 'a') as f:
#Écrire le journal 10 fois
while n < 10:
#Date Heure
now = datetime.datetime.now()
nowTime = '{0:%Y/%m/%d %H:%M:%S}'.format(now)
#Groupe de données
data1 = 'data1'
data2 = 'data2'
data3 = 'data3'
writeStr = nowTime + ',' + data1 + ',' + data2 + ',' +data3
writeStr = writeStr.split(',')
#Confirmation de la chaîne de caractères écrite
#Exemple:'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;
//Groupe de données
char data1[] = "data1";
char data2[] = "data2";
char data3[] = "data3";
//Ouvrez le fichier (s'il n'existe pas, il sera créé automatiquement)
fp = fopen(fname, "a");
if(fp == NULL){
printf("file can't open¥n");
return -1;
}
//Écrire le journal 10 fois
for(int n = 0; n < 10; n++){
//Date Heure
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);
//Confirmation de la chaîne de caractères écrite
//Exemple:"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;
}
Lorsque je développe l'IoT, je laisse un journal sur le serveur, mais lorsque je ne peux pas me connecter à Internet Le sentiment de désespoir lorsque le journal disparaît pendant ce temps est incroyable, je voudrais donc créer un fichier CSV sur la carte SD et l'enregistrer avec diligence de cette manière.