Unire due file

di il
40 risposte

40 Risposte - Pagina 3

  • Re: Unire due file

    Quello che mostri è un file excel, non un file di testo in cui non hai le colonne
  • Re: Unire due file

    Per riscrivere i dati ti conviene utilizzare csv.writer
  • Re: Unire due file

    Buongiorno .. e grazie per aver risposto ,
    purtroppo pur leggendo e rileggendo , di tutto sul web ...le mie basi sono meno di zero ,
    vado a tentativi ...consapevole che non e' la strada giusta ,
    ho provato a modificare l'estensione del file da csv file=open("./Uniti Temperatura+RaSG.csv","a")
    in xls file=open("./Uniti Temperatura+RaSG.csv","a")
    e modificando file.writelines('%s,%s,%s\n'%(stringa,JOULE,Media))
    in file.writelines('%s\n'%(stringa))
    file.writelines('%s\n'%(JOULE))
    file.writelines('%s\n'%(Media))

    cioe' la parte finale del codice :
    file=open("./Uniti Temperatura+RaSG.XLS","a")
    giorno=datetime.datetime.strptime(stringa, "20%y%m%d")
    file.writelines('%s\n'%(stringa))
    file.writelines('%s\n'%(JOULE))
    file.writelines('%s\n'%(Media))
    file.close()
    delta =delta+datetime.timedelta(days=1)
    print (stringa)
    quello che speravo di ottenere e che mi scrivesse il valore di "stringa" in colonna "a" ,il valore di "JOULE" in colonna "b" e il valore di "Mediae" in colonna "c" invece me li scrive sempre anche se separatamente in colonna "a" , scusami SuperQWE ,invece file.writelines utilizzare csv.writer ... potresti essere cosi' gentile da darmi ulteriori dettagli ...dopo la tua ho fatto ricerche sul web ma mi e' difficile mettere in pratica l'utilizzo di esso ...sto impazzendo da un bel po' di tempo.
    Mi permetto nel dilungarmi x spiegare quello che sarebbe il mio desiderio di fare ....
    in un file excel devo inserire due dati :
    1- radiazione solare
    2-la media della temperatura giornaliera
    ho trovato un sito dove ci sono questi dati http://cemec.arpacampania.it/meteoambientecampania/php/misure_suolo.php
    https://drive.google.com/file/d/1EdjCmis8cCcOcpCZEPktyxI7qc60uphG/view?usp=sharing
    tramite il file Phyton ottengo come risultato
    https://drive.google.com/file/d/1EYoz1bm96BszuK5t3a56FQWc4enHNYiJ/view?usp=sharing
    lo leggo con excel ed attualmente manualmente mettendo delle formule nelle colonne b,c,d
    https://drive.google.com/file/d/1uO6GWWxvRK7LZtqsRKwAfQwCl8eHethQ/view?usp=sharing
    desidererei che quest'ultima operazione la farebbe il file phyton
    perdonatemi e del tempo rubatovi e sperando di essere stato chiaro.... se potreste aiutarmi vi sarei grati.
  • Re: Unire due file

    Ti ripeto che non puoi scrivere delle colonne in un file di testo.

    Se apri il file con Excel puoi indicare che il separatore è la virgola e le separa lui.
  • Re: Unire due file

    Grazie Oregon quindi posso farlo solo dopo averlo importato in excel ,o con la conversione guidata da testo o come faccio adesso creando in delle colonne e inserendo delle formule tipo "=--SOSTITUISCI(STRINGA.ESTRAI(A1;10;TROVA(",";A1;TROVA(",";A1)+1)-10);".";",")",
    pensavo che phyton potesse andare scrivere i dati che avevamo estrapolati stringa,media e joule in colonne separate ,invece vede solo la colonna "a".
  • Re: Unire due file

    Non mi sono spiegato. Python non "vede colonne". Non ha senso. Nessun linguaggio "vede colonne".

    Il file che crei è di testo e NON ci sono colonne.

    Le colonne stanno in un file Excel quindi hai due alternative

    1a - crei un file Excel con il tuo programma Python (ci sono strumenti per farlo ... ad esempio https://xlsxwriter.readthedocs.io/example_demo.html#ex-demo)

    1b - crei un file Excel con un altro linguaggio di programmazione (che conosci)

    2 - continui con un file di testo (o csv è lo stesso) e lo apri con Excel importando le varie colonne (le virgole servono a questo)

    Per i punti 1a e 1b ovviamente il codice sarebbe più complesso di quello attuale (e magari avresti ancora più difficoltà).
    Naturalmente non le potresti affrontare in questo (chilometrico) thread e penso ti ci vorrà un aiuto "sul posto" (qualcuno che ti aiuti nella scrittura da zero)
  • Re: Unire due file

    Grazie x la delucidazione ... buon prosieguo di giornata.
  • Re: Unire due file

    Salve ragazzi perdonatemi se continuo a importunarvi ,nel codice
    
    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_PR" 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("./Portici Temperatura+RaSG.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)
    
    vorrei mettere un controllo in quanto , faccio un esempio
    gg=input('INSERISCI GIORNO INIZIALE DA ESAMINARE ') inserisco 1
    mm=input('mese ') inserisco 4
    aa=input('anno (2 cifre) ') inserisco 19
    deve leggermi i dati dal 1/4/19 a n
    supponiamo che nella cartella ci sono i file dati_centraline_20190401_meteo.csv dal 2019/04/01 al 2019/04/30
    succede che in un file esempio dati_centraline_20190419_meteo.csv non sono presenti i dati "ARPACAMPANIA_PR" si ferma alla lettura dei dati fino al 2019/04/18 , come inserire un controllo affinche' se non trova in un file i dati i dati di "ARPACAMPANIA_PR" prosegue ,
    20190401,16682.327999999998,10.708333333333336
    20190402,16269.911999999997,11.405
    20190403,13443.804000000002,11.731250000000001
    20190404,4177.764,10.515416666666667
    20190405,3823.308,12.143333333333333
    20190406,18823.068,10.355
    20190407,13615.2,11.048749999999998
    20190408,16790.220000000005,11.938749999999999
    20190409,17057.951999999997,11.359166666666667
    20190410,17867.304,11.386250000000004
    20190411,12615.660000000002,11.241666666666667
    20190412,17571.095999999998,11.342083333333333
    20190413,8671.428,11.062916666666665
    20190414,9291.636,11.3825
    20190415,17866.152000000002,10.938749999999999
    20190416,15846.083999999999,11.694583333333334
    20190417,19275.768,12.252500000000003
    20190418,19202.220000000005,13.329583333333332
    si ferma
    potrebbe mettere :
    DATI MANCANTI
    e proseguire
    20190420,21131.712,14.34958333333333
    20190421,20669.868000000002,14.275416666666667
    20190422,4608.2519999999995,15.473333333333336
    20190423,5219.856000000001,15.22
    20190424,11139.156,15.168333333333331
    20190425,19833.912000000004,17.38416666666667
    20190426,20498.328,18.699583333333333
    20190427,15838.524000000001,16.25875
    20190428,20837.447999999997,14.085416666666667
    20190429,11680.307999999999,13.202083333333333
    20190430,14413.968,12.042083333333332
    grazie
  • Re: Unire due file

    Con la gestione delle eccezioni.
    Nel tuo caso:
    try:
        with open(nome_file) as file_csv:
            # fai quello che devi fare
    except FileNotFoundError:
        print(nome_file, 'non esiste')
    PS: che editor usi? Il codice che hai postato è indentato in maniera pessima.
  • Re: Unire due file

    Grazie SuperQWE , gentilissimo , il file e frutto di copia e incolla e dall'aiuto datomi da oregon , ti chiedo se posso ....un'ulteriore ....(aiuto) dove collocare nel mio codice la parte del tuo codice ho tentato ma purtroppo non ci sono riuscito.
    rinnovo il grazie


    SuperQWE ha scritto:


    Con la gestione delle eccezioni.
    Nel tuo caso:
    try:
        with open(nome_file) as file_csv:
            # fai quello che devi fare
    except FileNotFoundError:
        print(nome_file, 'non esiste')
    PS: che editor usi? Il codice che hai postato è indentato in maniera pessima.
    
    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_PR" 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("./Portici Temperatura+RaSG.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

    SuperQWE ha scritto:


    Buongiorno SuperQWE ,
    il tuo codice bisognava sostituirlo :
    try:
        with open("./dati_centraline_"+stringa+"_meteo.csv") as filecsv:
                 # fai quello che devi fare
    except FileNotFoundError:
         print("./dati_centraline_"+stringa+"_meteo.csv", 'non esiste')
        
    fin qui giusto
Devi accedere o registrarti per scrivere nel forum
40 risposte