Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [python] problemi con csv

    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?

    codice:
    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?

  2. #2
    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 è:

    codice:
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.