Unire due file

di il
40 risposte

40 Risposte - Pagina 2

  • Re: Unire due file

    Riprova nel far pulizia ... l'avevo rimosso
    gentilmente dammi conferma se riesci a caricarlo
    grazie per la tua disponibilita'
  • Re: Unire due file

    
    import datetime
    import csv
    import sys
    
    gg=input('INSERISCI GIORNO INIZIALE DA ESAMINARE ')
    mm=input('mese ')
    aa=input('anno (2 cifre) ')
    
    start2=str(gg)+'/'+str(mm)+'/'+str(aa)
    start1=str(start2)
    print (start1)
    start=datetime.datetime.strptime(start1, "%d/%m/%y")
    finish=datetime.datetime.today()
    delta=start
    while delta<finish-datetime.timedelta(days=1):
     stringa=datetime.datetime.strftime(delta,"20%y%m%d")  
     with open("./dati_centraline_"+stringa+"_meteo.csv") as filecsv:
        lettore = csv.reader(filecsv,delimiter=",")
        header = next(lettore)
        #print(header)
        dati = [(linea[0],linea[2],linea[5]) for linea in lettore if linea[0]=="ARPACAMPANIA_NA01" and linea[2]=="RadSG"]
        dati2 = [(linea[2]) for linea in dati]
        #print (dati2)
        somma=0
        somma2=0
        n=0
        for val in dati2:
         val=val.replace(",",".")
         val2=float(val)
         somma2=somma2+val2
         n=n+1
         if val2>0:
          somma=somma+val2
          #print (val2)
        print (somma)
        JOULE=somma*3.6
        Media=somma2/n
        print(JOULE)
        #print (dati2)
        #print (val)
        #print(n)
        file=open("./OSSERVATORIO_RadSG.csv","a") 
        giorno=datetime.datetime.strptime(stringa, "20%y%m%d")
        file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media))
        file.close()
     delta =delta+datetime.timedelta(days=1)
     print (stringa)
    
    Non so se i risultati hanno un senso ...
  • Re: Unire due file

    Oregon ti ringrazio vivamente ...non tutti i valori non sono quelli desiderati
    https://drive.google.com/file/d/1iVWoiKyMb9eFPEP6hPeNsBR3MvTD3n1V/view?usp=sharing

    nella foto a sx e il file del tuo codice ( prendiamo in esame la riga 1)abbiamo il risultato 20191101,6041.124,69.92041666666667
    20191101 e la data ....ok
    6041.124 e il valore della radiazione solare ...ed e uguale a quello della foto al centro ...ok
    69.92041666666667 questo valore che dovrebbe essere la media della temperatura e' sbagliato dovrebbe essere 15.499166666666666 come quello della foto a dx se mandi in esecuzione il file osservatorio_temperatura vedi che esce quel valore .....comunque ci siamo quasi ...
  • Re: Unire due file

    Ciao oregon , nel link della cartella che ti ho inviato abbiamo due file :
    1- leggi_RadSG_OSSERVATORIO.py
    in esso :
    dati = [(linea[0],linea[2],linea[5]) for linea in lettore if linea[0]=="ARPACAMPANIA_NA01" and linea[2]=="RadSG"]
    legge i valori della colonna RadSG fa la somma di essi e li moltiplica x 3,6
    e questi sono presenti nel codice da te fatto .
    Abbiamo un secondo file Osservatorio_temperatura.py
    dati = [(linea[0],linea[2],linea[5]) for linea in lettore if linea[0]=="ARPACAMPANIA_NA01" and linea[2]=="Temperatura aria"]
    il file legge i valori della colonna Temperatura aria fa la somma e poi la media.
    nel codice che abbiamo unito , prende in esame solo i dati di RadSG ,
    fa la somma di essi e li moltiplica x 3,6 1678,09x3,6=6041,124 tutto questo ok
    poi dei stessi li somma e fa la media 1678,09/24=69,92......questo non devono essere del RadSG del leggi_RadSG_OSSERVATORIO.py ma dalla Temperatura aria del file Osservatorio_temperatura.py
    quello che scrivo adesso non e' corretto ma solo per farmi capire :
    dati = [(linea[0],linea[2],linea[5]) for linea in lettore if linea[0]=="ARPACAMPANIA_NA01" and linea[2]=="RadSG"] and linea[2]=="Temperatura aria"]
  • Re: Unire due file

    Controlla questo
    
    import datetime
    import csv
    import sys
    
    gg=input('INSERISCI GIORNO INIZIALE DA ESAMINARE ')
    mm=input('mese ')
    aa=input('anno (2 cifre) ')
    
    start2=str(gg)+'/'+str(mm)+'/'+str(aa)
    start1=str(start2)
    print (start1)
    start=datetime.datetime.strptime(start1, "%d/%m/%y")
    finish=datetime.datetime.today()
    delta=start
    while delta<finish-datetime.timedelta(days=1):
     stringa=datetime.datetime.strftime(delta,"20%y%m%d")  
     with open("./dati_centraline_"+stringa+"_meteo.csv") as filecsv:
        lettore = csv.reader(filecsv,delimiter=",")
        header = next(lettore)
    
        dati = [(linea[0],linea[2],linea[5])
        for linea in lettore if linea[0]=="ARPACAMPANIA_NA01" and (linea[2]=="RadSG" or linea[2]=="Temperatura aria")]
    
        somma=0
        somma2=0
        n=0
        for val in dati:
         vv=float(val[2].replace(",","."))
         if val[1]=="RadSG" and vv>0:
          somma=somma+vv
         if val[1]=="Temperatura aria":
          somma2=somma2+vv
          n=n+1
    
        JOULE=somma*3.6
        Media=somma2/n
    
        file=open("./OSSERVATORIO_RadSG.csv","a") 
        giorno=datetime.datetime.strptime(stringa, "20%y%m%d")
        file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media))
        file.close()
     delta =delta+datetime.timedelta(days=1)
     print (stringa)
    
  • Re: Unire due file

    Grazie ... Grazie ... Grazie oregon funziona benissimo ..... rinnovo il grazie per la tua disponibilita' e professionalita'.
    Ps. non conosco le potenzialita' del pyton ...posso permettermi di chiederti se e' possibile fare un'altra cosa ?
  • Re: Unire due file

    È possibile fare tutto ma ho fatto già un'eccezione...
  • Re: Unire due file

    oregon ha scritto:


    È possibile fare tutto ma ho fatto già un'eccezione...
    Ok.... grazie
  • Re: Unire due file

    Oregon perdonami se mi permetto di disturbarti potresti essere solo cosi gentile da darmi un link o all'interno del forum dove posso leggere le istruzioni per modificare il risultato del codice :
    in colonna "A" abbiamo la stringa 20191101,6041.124,15.499
    mettere in colonna "A" la data in formato 01/11/2019
    mettere in colonna "B" 6041.124 o meglio 6041
    mettere in colonna "C" 15.499 o meglio 15,499
    grazie
  • Re: Unire due file

    Https://stackabuse.com/how-to-format-dates-in-python

    https://www.geeksforgeeks.org/python-output-formatting

    altre ricerche puoi tranquillamente farle a partire da quei concetti ...
  • Re: Unire due file

    Oregon scusami se mi permetto di riscriverti e chiederti una delucidazione ,
    con l'istruzione : file=open("./ file=open("./OSSERVATORIO_RadSG.csv","a")","a")
    salvo il file con il nome OSSERVATORIO_RadSG.csv in modalita "a" append esso
    apre il file per aggiungere dati: se il file con il nome indicato non è presente sul disco ne crea uno, altrimenti scriverà i nuovi dati alla fine del file, senza cancellare quelli vecchi ,
    ho provato le altre modalita "w","r","r+", nessuno di mio utilita',cercavo un modo ,
    che mi riscrivesse il file partendo dalla seconda linea in quanto nella prima avrei delle formule , sovrascrivendoli se le stringhe sono uguali e aggiungendo se ci sono delle nuove dalla fine .
    Grazie e scusami
  • Re: Unire due file

    Se tu crei quel file con una sola riga all'inizio i dati saranno aggiunti dopo la prima riga.
  • Re: Unire due file

    Grazie oregon , facendo un po' di prove
    dopo l'input del file ho messo file=open("./Portici_Temperatura.csv","w") e mi cancella i dati
    alla fine ho messo
    file=open("./Portici_Temperatura.csv","a")
    giorno=datetime.datetime.strptime(stringa, "20%y%m%d")
    file.writelines('%s,%s\n'%(giorno,Media))
    file.close()
    delta =delta+datetime.timedelta(days=1)
    print (stringa)
    e mi riscrive i dati , e mi funziona
    come posso fare affinche' file=open("./Portici_Temperatura.csv","w") ,e file=open("./Portici_Temperatura.csv","a")
    devono essere effettuato dalla seconda linea del file
  • Re: Unire due file

    La open con "a" scrive in "append" ovvero aggiunge. Se c'è una prima linea, viene scritto a partire dalla seconda.
  • Re: Unire due file

    Ciao Oregon , pardon se mi permetto di rimportunarti ... sto letteralmente impazzendo ,poi mi rendo conto che non sono neanche bravo nel porre le domande (l'eta' .. sono un 65enne)
    parte Del codice :

    JOULE=somma*3.6
    Media=somma2/n

    file=open("./Uniti Temperatura+RaSG.csv","a")
    giorno=datetime.datetime.strptime(stringa, "20%y%m%d")
    file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media))


    con questa istruzione :
    file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media))
    abbiamo in riga 1 colonna "a" 20191101,6528.204,15.342916666666667
    abbiamo in riga 2 colonna "a" 20191102,5487.264,16.552916666666665
    abbiamo in riga 3 colonna "a" 20191103,2058.6600000000003,17.27375
    e cosi via
    come modificare : file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media)) ...
    oppure bisogna utilizzare qualche altra istruzione per ottenere :

    in riga 1 colonna "a" 20191101 colonna "b" 6528.204 colonna "c" 15.342916666666667
    in riga 2 colonna "a" 20191102 colonna "b" 5487.264 colonna "c" 16.552916666666665
    in riga 3 colonna "a" 20191103 colonna "b" 2058.6600000000003 colonna "c" 17.27375
    https://drive.google.com/file/d/1uO6GWWxvRK7LZtqsRKwAfQwCl8eHethQ/view?usp=sharing

    grazie e rinnovo scusa per l'insistenza nello scriverti
Devi accedere o registrarti per scrivere nel forum
40 risposte