- 论坛徽章:
- 0
|
写了一个将ASCII咨料转成binary的程式,compile后产生新的檔名, 但裡面完全
是空的,找不到原因,想请教一下各位,內容如下:
import struct,math
def dedata():
if b[15] != ' ' and b[18] != ' ':
us=-1*float(b[18])*math.sin(float(b[15])*math.pi/180)
vs=-1*float(b[18])*math.cos(float(b[15])*math.pi/180)
else:
us=und
vs=und
if b[20] != ' ':
gus=-1*float(b[20])*math.sin(float(b[15])*math.pi/180)
gvs=-1*float(b[20])*math.cos(float(b[15])*math.pi/180)
else:
gus=und
gvs=und
if b[58] != ' ':
tt=0.1*float(b[58])
else:
tt=und
if b[61] != ' ':
td=0.1*float(b[61])
else:
td=und
if b[66] != ' ':
slp=0.1*float(b[66])
else:
slp=und
if len(b) <= 72:
pr=und
elif len(b) >; 72:
if b[71] == '9999' or b[71] == ' ':
pr=und
else:
pr=0.01*float(b[71])
val=struct.pack("8f",slp,tt,td,us,vs,gus,gvs,pr)
return val
#MAIN PROGRAM
outputdir="K:\\test\\"
startime='0100'
endtime='1800'
siteps={'606':[25.07,121.55],'616':[25.0694,121.2083],'710':[22.559,120.337],'725':[22.76,121.09],'757':[22.69,121.44],'767':[22.06,121.52]}
#
site=['TT']
und=-999.9
fin=[]
for ia in range(len(site)):
f1=open('K:\\test\\'+site[ia]+startime[]+'.txt','r')
fin.append(f1)
outfna=startime+'-'+endtime+'.dat'
fout1=open(outputdir+outfna,'wb+')
tim=0.0
icou=1
for ib in range(len(fin)):
while 1:
a=fin[ib].readline()
stn=a[0]
datetime=a[3]
if not a or datetime >; endtime:
break
while endtime >;= datetime >;= startime:
if datetime[10] == '00':
siteps[stn].append(a)
a=fin[ib].readline()
datetime=a[3]
siteno=siteps.keys()
tim=0.0
nlev=0
print 'SEPARATE SITE AND TIME.....'
for i1 in range(2,len(siteps[siteno[0]])):
for i2 in range(len(siteno)):
rlat=siteps[siteno[i2]][0]
rlon=siteps[siteno[i2]][1]
b=siteps[siteno[i2]][i1]
nlev=1
nflag=1
fdata=struct.pack("fffLL",rlat,rlon,tim,nlev,nflag)
val=dedata()
fout1.write('66'+siteno[i2]+'0 '+fdata+val)
nlev=0
fdata=struct.pack("fffLL",rlat,rlon,tim,nlev,nflag)
fout1.write('66'+siteno[i2]+'0 '+fdata)
for id in range(len(fin)):
fin[id].close()
fout1.close()
#print 'TOTAL HOURLY TIME STEP: ',i1-2
print 'DONE'
請各位幫我看一下,tks ^^ |
|