爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5191|回复: 0

pthon处理站点降水数据

[复制链接]
发表于 2020-2-8 11:15:15 | 显示全部楼层 |阅读模式
GrADS
系统平台: windows
问题截图: -
问题概况: 想处理72小时的小时降水数据,计算平均小时降水量生成一个新的txt文件。思路是将各个文件相同站点的降水数据求和再平均。但是因为有些时刻有的站点没有数据,所以在两个文件相比较的时候把有的相同站点和没有都要存储起来。但是我的程序只能运行成功15个文件,并且越往后录入的数据就越少是怎么回事呢?
我看过提问的智慧: 看过
自己思考时长(天): 2

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
##首先将文件1的内容添加到average rainfall.txt文件中
path1='D:\\DATA\\hourly\\20110729\\hourly precipitation\\average rainfall.txt'#设置average rainfall.txt的路径
infile=open(file_ob_list[0], 'rb')
with open(path1, 'wb')as f2:
    f2.write(infile.read())
infile.close()
##再将average rainfall.txt与剩下的文件进行比较计算数据
path1='D:\\DATA\\hourly\\20110729\\hourly precipitation\\average rainfall.txt'#设置average rainfall.txt的路径
for i in range(2,file_number):
    print(i)
    with open(path1,'r+') as f:#打开上一次循环生成的average rainfall.txt文件
        lines=f.readlines()#读取average rainfall.txt文件的每一行数据存入lines
    print(lines)
    with open(path1,'r+') as f:   
        f.truncate()#将文件内容存好之后清空文件
    for line in lines:
        eachline=line.split()#将上一次生成的average rainfall.txt文件的数据每一行按空格分开存放为一个列表   
        with open(file_ob_list[i],'r') as f3:#打开文件i
            count3=len(f3.readlines())#读取文件3的数据行数
        with open(file_ob_list[i],'r') as f3:#打开文件i
            lines3=f3.readlines()#读取文件i的每一行数据并存放入lines3
            for line3 in lines3:
                line_number=1
                eachline3=line3.split()#将文件i的数据每一行按空格分开存放为一个列表   
                if line_number<=count3:#判断是否已经与文件i的每一行进行了比较
                    if eachline[0]==eachline3[0]:#如果站号相同计算两站小时降水量并将相同站点数据信息写到taverage rainfall.txt文件中
                        rain_sum=Decimal(eachline[4])+Decimal(eachline3[4])
                        with open(path1,'a') as f:
                            f.write(eachline[0]+'  '+eachline[1]+'  '+eachline[2]+'  '+eachline[3]+'  '+str(rain_sum)+'\n')#存入站点、经度、纬度、海拔高度、降水量和
                        break#若已经有匹配的站点则直接退出循环
                    else:#若站点不相同则继续寻找
                        line_number=line_number+1
                        continue
                else:#若文件2中没有匹配的站点则将average rainfall.txt站点数据直接存入average rainfall.txt
                    print('已与文件',i,'的每一行进行比较,发现第',i,'个文件中没有该行的站点信息,需添加!')
                    with open(path1,'a') as f:
                        f.write(eachline[0]+'  '+eachline[1]+'  '+eachline[2]+'  '+eachline[3]+'  '+eachline[4]+'\n')



密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表