- 积分
- 594
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-3-11
- 最后登录
- 1970-1-1
|
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')
|
|