私は現在、2つのソースから情報を読み込み、出力ファイル\ _spec_final.t15に正しくフォーマットするこのコードを持っています。現在、情報は次々に印刷されますが、1行/ファイルの情報を印刷して、次の繰り返しで上書きすることをお勧めします。誰もこれを行う方法を知っていますか?ループの反復 - 出力ファイルの書き換え
with open('\\_spec_final.t15', 'w') as f:
with open('info.txt', 'rt') as infofile:
for count, line in enumerate(infofile):
print count
lat = float(line[88:94])
lon = float(line[119:127])
year = int(line[190:194])
month = int(line[195:197])
day = int(line[198:200])
hour = int(line[201:203])
minute = int(line[204:206])
second = int(line[207:209])
dur = float(line[302:315])
numpoints = float(line[655:660])
fov = line[481:497] # field of view?
sza = float(line[418:426])
snr = 0.0000
roe = 6396.2
res = 0.5000
lowwav = float(lowwav)
highwav = float(highwav)
spacebw = (highwav - lowwav)/ numpoints
d = datetime.datetime(year, month, day, hour, minute, second)
f.write('{:>12.5f}{:>12.5f}{:>12.5f}{:>12.5f}{:>8.1f}'.format(sza,roe,lat,lon,snr)) # line 1
f.write("\n")
f.write('{:>10d}{:>5d}{:>5d}{:>5d}{:>5d}{:>5d}'.format(year,month,day,hour,minute,second)) # line 2
f.write("\n")
f.write(('{:%Y/%m/%d %H:%M:%S}'.format(d)) + "UT Solar Azimuth:" + ('{:>6.3f}'.format(sza)) + " Resolution:" + ('{:>6.4f}'.format(res)) + " Duration:" + ('{:>6.2f}'.format(dur))) # line 3
f.write("\n")
f.write('{:>21.13f}{:>26.13f}{:>24.17e}{:>12f}'.format(lowwav,highwav,spacebw,numpoints)) # line 4
f.write("\n")
with open(files[count], 'r') as g:
for line in g:
wave_no, intensity = [float(item) for item in line.split()]
if lowwav <= wave_no <= highwav:
f.write(str(intensity) + '\n')
ループの内側に書き込むためにファイルを開く行を移動するだけです。あなたがそれを開くたびに、ファイルを最初に切り捨てます。 – xgord
ここに移動しますか?あなたはそれをインデントしないのですか? – alli
ループの中でそれを移動させます: 'for'ループヘッダが最初に来て、そのループの中に' open(...、 'w') '行があります – xgord