- 积分
- 2338
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-10-29
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Zhuming 于 2020-11-22 17:17 编辑
# -*- coding: <encoding name> -*-
# Author:Stelliformzm@163.com
# Instructions:Entry level,for reference only
# Description:*.txt,Micaps data,Monthly precipitation is calculated by daily precipitation;multiprocessing
# details:ID,lat,lon,dem,year,mon,day,pre1(8-20h),pre2(20-8h),pre3(20-8h)
import os
import glob
import pandas as pd
from multiprocessing import Pool
# Better for using os.walk()
file_dirs = [
r'G:\meteorologyData\output\pre_summer\6',r'G:\meteorologyData\output\pre_summer\7',r'G:\meteorologyData\output\pre_summer\8',\
r'G:\meteorologyData\output\pre_autumn\9',r'G:\meteorologyData\output\pre_autumn\10',r'G:\meteorologyData\output\pre_autumn\11',\
r'G:\meteorologyData\output\pre_winter\12',r'G:\meteorologyData\output\pre_winter\1',r'G:\meteorologyData\output\pre_winter\2',\
]
outfile_dir = r'G:/meteorologyData/output/output'
station = [
'56038','56079','56144','56146','56152','56167','56172','56173','56178','56182',\
'56187','56188','56247','56251','56257','56357','56374','56385','56386','56444','56459','56462',\
'56475','56479','56485','56492','56533','56543','56548','56565','56571','56586','56643','56651',\
'56664','56666','56671','56684','56691','56739','56748','56751','56778','56792','56793','56856',\
'56875','56886','56946','56951','56954','56964','56966','56969','56977','56991','57206','57237',\
'57306','57313','57328','57348','57405','57411','57432','57502','57503','57512','57516','57517',\
'57520','57523','57536','57606','57608','57612','57625','57633','57647','57707','57710','57718',\
'57722','57729','57731','57741','57803','57805','57806','57816','57825','57827','57832','57839',\
'57840','57902','57906','57907','57910','57912','57916','57922','57926','57932','59007'
]
def main(O):
file_list = cycle_file(file_dirs[O])
# Circular files
for filename in file_list:
print(filename[-13:])
df = read_file(filename)
# print(df)
# Circular stations
for stat in range(len(station)):
# print(stat)
# print(station[stat])
pre = 0.0
# print(df.shape[0])
# For Monthly precipitation(sum)
for i in range(df.shape[0]):
# print(df.iloc[i,0],station[stat])
if(df.iloc[i,0] == int(station[stat])):
pre = df.iloc[i,9] + pre
lat = df.iloc[i,1]/100
lon = df.iloc[i,2]/100
# print(station[stat],lat,lon,pre)
with open(outfile_dir+'/'+filename[-13:],'a') as f:
f.write(str(station[stat])+','+str(lat)+','+str(lon)+','+str(pre)+'\n')
f.close()
return
# Reading files
def read_file(filename):
df = pd.read_csv(filename,header=None,sep=r',')
return df
# Get File List
def cycle_file(file_dir):
file_list = []
for filedir in glob.glob(os.path.join(file_dir,"*.txt")):
file_list.append(filedir)
return file_list
if __name__ == '__main__':
# file_dir = r'G:/meteorologyData/output/pre_summer/6'
# main(file_dir,outfile_dir,station)
pool = Pool(5)
for O in range(len(file_dirs)):
pool.apply_async(main,(O,))
pool.close()
pool.join() |
|