PDA

Visualizza la versione completa : [python] problemi con csv


tobpic
27-06-2013, 09:38
buongiorno a tutti e grazie mille a chi risponderà :)
ho un roblema con la scrittura di un programma in python che dovrebbe lavorare con un file csv: in pratica il rpogramma rileva la temperatura del computer (un raspberry), la data, e le scrive in un csv. fin qua aveva tutto funzionato. Poi ho aggiunto altre righe: avevo bisogno che il nuovo programma aprisse il file contenente già altre temperature ed aggiungesse all fine l'ultimo dato. inoltre se si superavano le 24 righe il programma doveva eliminare l meno recenti. Ho scritto questo listato ma non funziona nulla.... :( mi sapreste aiutare?


import subprocess
import csv
from time import localtime, strftime

t = subprocess.check_output(["/opt/vc/bin/vcgencmd","measure_temp"])
a = str(t)
h = a[5:9]
s = strftime("%H:%M %D", localtime())

temperature = h.encode("utf-8")
time = s.encode("utf-8")
newtemp = [time,temperature]

fcsv = open("temperaturegraph.csv", "r+")
totalrecord = csv.reader(fcsv, delimiter = ",")
wrobj = csv.writer(fcsv)

row=1
while row <25:
for record in totalrecord:
wrobj.writerow(record)
row =+ 1

wrobj.writerow(newtemp)

fcsv.close()

l'idle esegue il programma, ma alla fine trovo sempre il file vuoto... dove sbaglio? :dottò:

tobpic
28-06-2013, 17:30
forse mi sono spiegato male... ho provato a riscrivere il programma: ora mi aggiunge al csv la riga con data e temperatura; avrei solo bisogno di implementare una routine che elimini le righe più vecchie se vi sono più di 24 record (in modo da non aumentare troppo la dimensione del file). e questo non riesco a farlo :(
il codice attuale è:


import subprocess
import csv
import sys
import operator
from time import localtime, strftime

t = subprocess.check_output(["/opt/vc/bin/vcgencmd","measure_temp"])
a = str(t)
h = a[5:9]
s = strftime("%H:%M %D", localtime())

temperature = h.encode("utf-8")
time = s.encode("utf-8")
newtemp = [time,temperature]

fcsv = open("temperaturegraph.csv", "a")
wrobj = csv.writer(fcsv)
wrobj.writerow(newtemp)
fcsv.close()

fcsv = open("temperaturegraph.csv", "r")
totalrecord = csv.reader(fcsv, delimiter = ",")
row = 0
for record in totalrecord:
print(record)
row += 1
print(row)
for record in reversed(list(csv.reader(fcsv))):
print ','.join(record)

fcsv.close()

print("finish")

e funziona correttamente. nel listato ho anche aggiunto qualche print in più, per controllare cosa sta facendo...

Loading