2016-05-18 3 views
0

Ich benutze Spyder (Python 2.7), um einige Dateien zu analysieren und abgeleitete Werte in der IPython-Konsole auszudrucken. Dies funktionierte gut für kleinere Datenordner, da alle Ergebnisse in der Konsole gedruckt werden konnten. Ich bin ein Python-Anfänger, daher bin ich mir nicht sicher, wie ich meinen unten stehenden Code anpassen könnte, um diese Ergebnisse in eine Datei (txt oder csv) zu schreiben, anstatt sie auf die IPython-Konsole zu drucken.IPython-Konsole zu klein, um Daten zu drucken, wie in Datei schreiben?

Für jede Datei sollte die Datenausgabe wie folgt aussehen, obwohl das Drucken auf einer Zeile auch in Ordnung wäre. Idealerweise sollten alle Daten an dieselbe Ausgabedatei angehängt werden. Gibt es eine einfache Möglichkeit, die Zeilen, die den Befehl print enthalten, in einen Befehl zum Schreiben in eine Datei umzuwandeln? Ich habe etwas Erfahrung mit csv.DictWriter gehabt, aber ich bin unsicher, wie man es in dieser Situation benutzt.

1063.3187872 , 
-243.615246702 , 
867.312033099 , 
3301.47950932 , 
10813.0 , 
-3.86140412292 , 
14.3743086525 , 
27.4415273499 , 
10.5395891182 , 
0.0 , 
53.0 , 
0.0 , 
0.0 ,a 

Mein Code ist unten:

import sharppy 
import sharppy.sharptab.profile as profile 
import sharppy.sharptab.interp as interp 
import sharppy.sharptab.winds as winds 
import sharppy.sharptab.utils as utils 
import sharppy.sharptab.params as params 
import sharppy.sharptab.thermo as thermo 
import numpy as np 
from StringIO import StringIO 
import glob 
import os 


os.chdir('X:/nonseabreezestormdays') 
for file in glob.glob("*.oax"): 
    spc_file = open(file, 'r').read() 


    def parseSPC(spc_file): 
     ## read in the file 
     data = np.array([l.strip() for l in spc_file.split('\n')]) 

     ## necessary index points 
     title_idx = np.where(data == '%TITLE%')[0][0] 
     start_idx = np.where(data == '%RAW%')[0] + 1 
     finish_idx = np.where(data == '%END%')[0] 

     ## create the plot title 
     data_header = data[title_idx + 1].split() 
     location = data_header[0] 
     time = data_header[1][:11] 

     ## put it all together for StringIO 
     full_data = '\n'.join(data[start_idx : finish_idx][:]) 
     sound_data = StringIO(full_data) 

     ## read the data into arrays 
     p, h, T, Td, wdir, wspd = np.genfromtxt(sound_data, delimiter=',', comments="%", unpack=True) 

     return p, h, T, Td, wdir, wspd 

    pres, hght, tmpc, dwpc, wdir, wspd = parseSPC(spc_file) 

    prof = profile.create_profile(profile='default', pres=pres, hght=hght, tmpc=tmpc, \ 
             dwpc=dwpc, wspd=wspd, wdir=wdir, missing=-9999, strictQC=True) 
    msl_hght = prof.hght[prof.sfc] # Grab the surface height value 
    #print "SURFACE HEIGHT (m MSL):",msl_hght 
    agl_hght = interp.to_agl(prof, msl_hght) # Converts to AGL 
    #print "SURFACE HEIGHT (m AGL):", agl_hght 
    msl_hght = interp.to_msl(prof, agl_hght) # Converts to MSL 
    #print "SURFACE HEIGHT (m MSL):",msl_hght 
    sfcpcl = params.parcelx(prof, flag=1) # Surface Parcel 
    fcstpcl = params.parcelx(prof, flag=2) # Forecast Parcel 
    mupcl = params.parcelx(prof, flag=3) # Most-Unstable Parcel 
    mlpcl = params.parcelx(prof, flag=4) # 100 mb Mean Layer Parcel 
    print mupcl.bplus, "," # J/kg 
    print mupcl.bminus, "," # J/kg 
    print mupcl.lclhght, "," # meters AGL 
    print mupcl.lfchght, "," # meters AGL 
    print mupcl.elhght, "," # meters AGL 
    print mupcl.li5, "," # C 
    sfc = prof.pres[prof.sfc] 
    p3km = interp.pres(prof, interp.to_msl(prof, 3000.)) 
    p6km = interp.pres(prof, interp.to_msl(prof, 6000.)) 
    p1km = interp.pres(prof, interp.to_msl(prof, 1000.)) 
    mean_3km = winds.mean_wind(prof, pbot=sfc, ptop=p3km) 
    sfc_6km_shear = winds.wind_shear(prof, pbot=sfc, ptop=p6km) 
    sfc_3km_shear = winds.wind_shear(prof, pbot=sfc, ptop=p3km) 
    sfc_1km_shear = winds.wind_shear(prof, pbot=sfc, ptop=p1km) 
    print utils.comp2vec(mean_3km[0], mean_3km[1])[1], "," 
    print utils.comp2vec(sfc_6km_shear[0], sfc_6km_shear[1])[1], "," 
    srwind = params.bunkers_storm_motion(prof) 
    #print "Bunker's Storm Motion (right-mover) [deg,kts]:", utils.comp2vec(srwind[0], srwind[1]) 
    #print "Bunker's Storm Motion (left-mover) [deg,kts]:", utils.comp2vec(srwind[2], srwind[3]) 
    srh3km = winds.helicity(prof, 0, 3000., stu = srwind[0], stv = srwind[1]) 
    srh1km = winds.helicity(prof, 0, 1000., stu = srwind[0], stv = srwind[1]) 
    print srh3km[0], "," 
    stp_fixed = params.stp_fixed(sfcpcl.bplus, sfcpcl.lclhght, srh1km[0], utils.comp2vec(sfc_6km_shear[0], sfc_6km_shear[1])[1]) 
    ship = params.ship(prof) 
    eff_inflow = params.effective_inflow_layer(prof) 
    ebot_hght = interp.to_agl(prof, interp.hght(prof, eff_inflow[0])) 
    etop_hght = interp.to_agl(prof, interp.hght(prof, eff_inflow[1])) 
    print ebot_hght, "," 
    print etop_hght, "," 
    effective_srh = winds.helicity(prof, ebot_hght, etop_hght, stu = srwind[0], stv = srwind[1]) 
    print effective_srh[0], "," 
    ebwd = winds.wind_shear(prof, pbot=eff_inflow[0], ptop=eff_inflow[1]) 
    ebwspd = utils.mag(ebwd[0], ebwd[1]) 
    print ebwspd, ",a" 
    scp = params.scp(mupcl.bplus, effective_srh[0], ebwspd) 
    stp_cin = params.stp_cin(mlpcl.bplus, effective_srh[0], ebwspd, mlpcl.lclhght, mlpcl.bminus 

Antwort

1

Anfügen Ihre Ausgabe in eine Datei:

f = open('myfile.txt','a') 
f.write(mupcl.bplus+ ",") 
f.write(mupcl.bminus+ ",") 
f.write(mupcl.lclhght+ ",") 
f.write(mupcl.elhght+ ",") 
f.write(mupcl.li5+ ",") 
# do this as long as you need to 
##f.seek(0,0) # return to the beginning of the file if you need to 
f.close() # close the file handle 

Sie eine \n jeder Zeile am Ende hinzufügen, können alle jene Zeile beim Schreiben auf verschiedenen Linien zu erhalten in der Datei.

0

Sie in einer Datei in Python schreiben kann die eingebaute write Methode eines file Objekts. Zuerst müssen Sie die Datei öffnen, so verwenden

with open(filename, 'w') as file: 

und alles unter dem eingerückt werden soll. Dann ändern Sie einfach die alle print-Anweisungen print x, y-file.write(str(x) + str(y) + '\n')

Verwandte Themen