免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3674 | 回复: 1
打印 上一主题 下一主题

请问该如何处理? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-13 22:25 |只看该作者 |倒序浏览
写了一个将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 ^^

论坛徽章:
0
2 [报告]
发表于 2005-08-14 19:45 |只看该作者

请问该如何处理?

你要解决的写文件写不进去,因此应该先将处理简化,等发现问题之后再加入处理。让别人帮助你读程序是不合适的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP