2016-05-18 10 views
0

私はSpyder(Python 2.7)を使っていくつかのファイルを分析し、派生した値をIPythonコンソールに出力しています。これは、すべての結果をコンソールに出力することができるため、データの小さなフォルダでうまくいきました。私はPythonの初心者ですので、IPythonコンソールに出力するのではなく、ファイル(txtまたはcsv)にこれらの結果を書き込むために私のコードをどのように適応させることができないのか分かりません。IPythonコンソールが小さすぎてデータを印刷できません。どのようにファイルに書き込むのですか?

各ファイルのデータ出力はこのように表示されますが、1行に印刷することもできます。理想的には、すべてのデータを同じ出力ファイルに追加することはできません。 printコマンドを含む行をファイルに書き込むコマンドに適合させる簡単な方法はありますか?私はcsv.DictWriterといくつかの経験がありましたが、私はこの状況でどのように使用するのかは不明です。

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 

私のコードは以下の通りです:

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 

答えて

1

にすべてのprint文を変更します。

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 

あなたは別のライン上の書き込みにこれらすべての行を取得するには、各行の末尾に\nを追加することができますファイル内にあります。

0

あなたはfileオブジェクトの組み込みwrite方法を使用してPythonでファイルに書き込むことができます。まず、ファイルを開くので、

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

を使用する必要があり、その下のすべてがインデントされなければなりません。それからちょうどファイルへのあなたの出力を追加はprint x, yからfile.write(str(x) + str(y) + '\n')

関連する問題