andrea d'alessandro
Profilo di
Nome | andrea d'alessandro |
---|---|
Indirizzo email | andrea.dalessandro@ingv.it |
Avatar | |
Messaggi | 5 |
-
- 2017-08-30 11:42:29
- Re: creare un file ogni 24 ore
- Forum >> Programmazione Python >> Files e Directory
- Ti ringrazio per la risposta....ma credo che il tuo esempio non faccia quello che sto cercando di fare.....
e credo che tu non abbia bisogno di importare pikle per scrivere o leggere un file.
Io devo :
1 prendere delle stringhe che in continuazione escono dalla seriale
2 scriverle in un file con il nome della data e ora Dell inizio del file.
3 alle 23:59:59 chiudere il file.
4 punto 1
5 punto 2
6punto 3 etc etc
-
- 2017-08-29 13:19:00
- creare un file ogni 24 ore
- Forum >> Programmazione Python >> Files e Directory
- Salve a Tutti,
ho fatto un piccolo script che gira su raspberry collegato alla seriale di un gps.
apre la seriale e mi scrive tutto cio che riceve in un file che viene chiamato (data + ora 'stazione1.txt')
funziona bene solo che vorrei fare in modo da far chiudere il file alle 23.59.59 e farlo riaprire con la data del gg seguente.
in poche parole vorrei avere dei files giornalieri invece di un unico grande files.......mi date qualche indizio please?????
ecco il mio codice:
qualsiasi consiglio e bene accetto
import serial
import time
import datetime
timestr = time.strftime("%Y%m%d-%H%M%S") #mese giorno anno ore minuti
indirizzo = '/dev/ttyUSB0' #indirizzo dove andare a leggere i dati
baud = 9600 #baud rate per la porta seriale
file_name = 'stazione1.txt' #nome del file
moode = 'a' #append
streaming = serial.Serial(indirizzo,baud)
timestr = time.strftime("%Y%m%d-%H%M%S")
try:
streaming.isOpen()
print ('la porta : ',indirizzo +' è aperta')
except:
('Errore')
exit()
if (streaming.isOpen()):
contatore=0
while True :
linea= str(streaming.readline())
contatore += 1
contatoreSTR=str(contatore) #devo convertire in stringa altrimenti non scrive sul file
linea2=(contatoreSTR +linea)
fo = open(timestr+file_name,fmode)
fo.write(linea2)
else:
print(indirizzo +' non si apre')
-
- 2016-08-29 13:44:08
- Re: Estrapolare dati da una stringa
- Forum >> Principianti
- Salve a tutti ,
dopo la pausa estiva ho rimesso mano al programmino ho dovuto cambiare un po di cose poiche' mi sono reso conto che scrivere su un file e poi effettuare operazioni sui dati scritti nel file era parecchio macchinoso cosi ho modificato il programma in questo modo:
1 ogni tot secondi invia un request richiesta()
2 prende i valori ricevuti da json file e li scompone
3 prende gli ultime tre valori della media del vento fa una lista e calcola la media crealista()
4 se la media calcolata e' >= a 12 invia una mail alert()
Funziona tutto a meraviglia solo che se la media del vento resta >= 12 invia milioni di mail
il programma dovrebbe inviare una mail quando la media e >=12 e una sola mail quando la media riscende sotto quel valore.
Chi mi aiuta?
inoltre leggevo che con linux e possibile inviare messaggi con whats up qualcuno si e' mai cimentato?
scusate se il programma e scritto in forma poco ortodossa prometto a me stesso che appena lo finisco comincio a studiare dalla 1 pagina del tutorial
import time import requests import datetime import string import json import smtplib def inviomail(): user = 'miamail@miamail.it' pwd = 'miapswd' FROM = 'andrea dalessandro' TO='altramail@gmail.com' SUBJECT= 'ABBISM 2.0 DONPABLO_WINDALERT' TEXT= 'Ci sono',media,'nodi direzione',dire # messaggio mail message = """From: %s\nTo: %s\nSubject: %s\n\n%s """ % (FROM, ", ".join(TO), SUBJECT, TEXT) try: server = smtplib.SMTP("smtp.gmail.com", 587) server.ehlo() server.starttls() server.login(user,pwd) server.sendmail(FROM, TO, message) server.close() print ('mail inviata') except: print('invio mail fallito') def richiesta(): r=requests.get('https://www.windguru.cz/int/wgsapi.php?uid=0080A3A8A416&password=omessa&q=station_data_current') rvalue= r.text return rvalue def crealista(): media=0 if len(lista)==0: print('1') lista.append(w) print (lista) elif len(lista)==1: lista.append(w) print('2') print(lista) elif len(lista)==2: lista.append (w) print('3') print(lista) elif len(lista)==3: del lista0 lista.append(w) print('4') print (lista) primov=lista0 secondov=lista1 terzov=lista2 media=(primov+secondov+terzov)/3 return media def alert(): if media >= 3: inviomail() print('Ci sono',media,'nodi') print('direzione',dire) else: print('nulla') print(dire) print (media) #inizio ciclo t = input('seleziona il tempo di acquisizione') tempo = float (t) lista=[] while True: outvalue = richiesta() #chiama la funzione richiesta() #scompone il file json ricevuto data = json.loads(outvalue) wind_avg = data['wind_avg'] wind_max = data['wind_max'] wind_min = data['wind_min'] wind_direction = data['wind_direction'] w=(wind_avg) #DIREZIONE VENTO =dire if (wind_direction > 348.75) and (wind_direction <=11.75): dire='N',wind_direction,'TRAMONTANA' elif (wind_direction > 11.75) and (wind_direction <=33.75): dire='NNE',wind_direction,'TRAMONTANA-GRECO' elif (wind_direction >33.75) and (wind_direction <=56.50): dire='NE',wind_direction,'GRECO' elif (wind_direction >56,50) and (wind_direction <=79): dire='ENE',wind_direction,'GRECO-LEVANTE' elif (wind_direction >79) and (wind_direction <=101.50): dire='E',wind_direction,'LEVANTE' elif (wind_direction >101.50) and (wind_direction <= 124): dire='ESE',wind_direction,'LEVANTE-SCIROCCO' elif (wind_direction >124) and(wind_direction <=146.50): dire='SE',wind_direction,'SCIROCCO' elif (wind_direction >146.50) and(wind_direction <=169): dire='SSE',wind_direction,'SCIROCCO-MEZZOGGIORNO' elif (wind_direction>169) and(wind_direction <=191.50): dire='S',wind_direction,'MEZZOGGIORNO' elif (wind_direction>191.50) and (wind_direction <=214): dire='SSW',wind_direction,'MEZZOGGIORNO-LIBECCIO' elif (wind_direction>214) and(wind_direction <= 236.50): dire='SW',wind_direction,'LIBECCIO' elif (wind_direction>236.50) and(wind_direction <= 259): dire='WSW',wind_direction,'LIBECCIO-PONENTE' elif (wind_direction>259) and (wind_direction <= 281.50): dire= 'W',wind_direction,'PONENTE' elif (wind_direction >281.50) and(wind_direction <= 304): dire='WNW',wind_direction,'PONENTE-MAESTRALE' elif (wind_direction > 304) and(wind_direction <=326.50): dire='NW',wind_direction,'MAESTRALE' elif (wind_direction >326.50) and(wind_direction <=348.75): dire='NNW',wind_direction,'MAESTRALE-TRAMONTANA' media=crealista() alert() pausa() time.sleep(tempo)
--- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:48:52 ---
--- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:54:43 ---
--- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:56:00 ---
--- Ultima modifica di andrea d'alessandro in data 2016-08-29 13:58:46 ---
--- Ultima modifica di andrea d'alessandro in data 2016-08-29 14:02:54 ---
-
- 2016-07-25 10:17:19
- Re: Estrapolare dati da una stringa
- Forum >> Principianti
- Ciao Claudio ,
in realta erano diverse ore che "surfavo" nel web in cerca di qualche soluzione, ho letto parecchi post sul forum per vedere se trovavo qualcosa che faceva al caso mio e mi sono imbattuto in parecchie "romanzine" fatte a chi postava il codice in maniera disordinata.
Grazie per la tua risposta mi mettero' subito al lavoro per cercare di andare avanti.......
anche se la curiosita' di sapere come risolvere il problema senza usare json e' davvero forte..........
magari se trovi un esempio ..........
Caio
-
- 2016-07-24 18:40:24
- Estrapolare dati da una stringa
- Forum >> Principianti
- salve a tutti
sto provando a fare un programmino che interroga una stazione meteo e scrive le risposte su di un file.
######################## ######################################################################### import time import requests import datetime import string def richiesta(): r=requests.get('https://www.windguru.cz/int/wgsapi.php?uid=0080A3A8A416&password=OMESSA&q=station_data_current') rvalue= r.text #print(r.text) return rvalue t = input('seleziona il tempo di acquisizione') i = float (t) while True: savefile = open ('meteolog.txt','a') #apre un file meteilog.txt in modalita append now = datetime.datetime.now() #prende il tempo e lo immagazzina nella variabile now timestamp = now.strftime ('%Y/%m/%d/ %H:%M') #trasforma la variabile now in anno mese giorno ore e minuti outvalue = richiesta() #chiama la funzione richiesta() outstring = outvalue print(outvalue) savefile.write(outstring) #scrive nel file creato outsring savefile.write('\n') #va a capo savefile.close() #chiude il file time.sleep(i) #aspetta il tempo indicato nella variabile i
Il programma finqui funziona a meraviglia e scrive un file di questo tipo :
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
{"wind_avg":4.27,"wind_max":5.24,"wind_min":3.3,"wind_direction":358.983,"temperature":null,"mslp":null,"rh":null,"datetime":"2016-07-24 15:34:23 CEST","unixtime":1469367263,"error_details":""}
adesso pero' dovrei prendere questi valori trasformarli in (int) o (float) ed inserirli in delle variabili per cominciare a fare dei calcoli........
mi sono bloccato.......
vi prego datemi uno spunto.
Scusatemi se ho sbagliato sezione
Buonaserata
Andrea