#-*- coding: utf-8 -*-
importosfrom pyhdf.SD importSD, SDCimportpprintimportnumpy as np
np.set_printoptions(threshold=np.NaN) #这一行和上一行的目的是在读出数据很多事,不会有省略号,数据全部可见
dir_list=os.listdir(r'D:\clouddata')#print(len(dir_list)) #输出文件的个数,1495
for v in dir_list[0:int(len(dir_list)):2]:
text_name = v[0:-4] #v遍历的是我下载的文件名,取到倒数第5位,是为了去掉.hdf,为了下面的写入文件的命名
filename = "D:\\pydata\\" + text_name + ".txt" #有多少个文件,就可以生成多少TXT,并且命名,这个套路要学着。
HDF_FILR_URL = "D:\clouddata\\"+v #拼成一个地址,这样才能读数据#print(HDF_FILR_URL)
file =SD(HDF_FILR_URL)#print(file.info())
datasets_dic =file.datasets()#for idx, sds in enumerate(datasets_dic.keys()):
#print(idx, sds)
sds_obj_profile_time = file.select('Profile_Time')#print(type(file.select('Profile_Time')))
sds_obj_feature_classification_flags = file.select('Feature_Classification_Flags')
sds_obj_longitude= file.select('Longitude')#select sds
sds_obj_latitude = file.select('Latitude')
sds_obj_layer_top_altitude= file.select('Layer_Top_Altitude')
sds_obj_layer_base_altitude= file.select('Layer_Base_Altitude')
sds_obj_layer_top_pressure= file.select('Layer_Top_Pressure')
sds_obj_layer_base_pressure= file.select('Layer_Base_Pressure')
sds_obj_layer_top_temperature= file.select('Layer_Top_Temperature')
sds_obj_layer_base_temperature= file.select('Layer_Base_Temperature')
data_profile_time= sds_obj_profile_time.get() #get sds data
data_longitude =sds_obj_longitude.get()
data_latitude=sds_obj_latitude.get()
data_layer_top_altitude=sds_obj_layer_top_altitude.get()
data_layer_base_altitude=sds_obj_layer_base_altitude.get()
data_layer_top_pressure=sds_obj_layer_top_pressure.get()
data_layer_base_pressure=sds_obj_layer_base_pressure.get()
data_layer_top_temperature=sds_obj_layer_top_temperature.get()
data_layer_base_temperature=sds_obj_layer_base_temperature.get()
data_feature_classification_flags=sds_obj_feature_classification_flags.get()
with open(filename,'a') as f:
a=len(data_profile_time)for i inrange(0,a):
var2= ''var1=data_layer_top_altitude[i]for j inrange(0, len(data_layer_top_altitude[0])):#print(type(var1[j]))
#print(data_layer_top_altitude[i])
var2 +=str(var1[j])
var2+= ' ' #这个步骤就是将数组内部的元素进行遍历,然后再在一行输出
if var2=="-9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0":
var2="" #这是为了筛掉无效数据,因为-9999.0是无效数据,只能占用内存,没有别的作用var4= ''var3=data_layer_base_altitude[i]for j inrange(0, len(data_layer_base_altitude[0])):
var4+=str(var3[j])
var4+= ' 'var6= ''var5=data_layer_top_pressure[i]for j inrange(0, len(data_layer_top_pressure[0])):
var6+=str(var5[j])
var6+= ' 'var8= ''var7=data_layer_base_pressure[i]for j inrange(0, len(data_layer_base_pressure[0])):
var8+=str(var7[j])
var8+= ' 'var10= ''var9=data_layer_top_temperature[i]for j inrange(0, len(data_layer_top_temperature[0])):
var10+=str(var9[j])
var10+= ' 'var12= ''var11=data_layer_base_temperature[i]for j inrange(0, len(data_layer_base_pressure[0])):
var12+=str(var11[j])
var12+= ' 'var14= ''var13=data_feature_classification_flags[i]for j inrange(0, len(data_feature_classification_flags[0])):
var14+=str(var13[j])
var14+= ' 'var16= ''var15=data_profile_time[i]for j inrange(0, len(data_profile_time[0])):
var16+=str(var15[j])
var16+= ' 'var18= ''var17=data_longitude[i]for j inrange(0, len(data_longitude[0])):
var18+=str(var17[j])
var18+= ' 'var20= ''var19=data_latitude[i]for j inrange(0, len(data_latitude[0])):
var20+=str(var19[j])
var20+= ' 'strs= var16 + " " + var18 + " " + var20 + " " + var2 + " " + var4 + " " + var6 + " " + var8 + " " + var10 + " " + var12 + " " + var14 + "\n"
if var2=="":
strs=""
#strs=var16+" "+var18+" "+var20+" "+var2+" "+var4+" "+var6+" "+var8+" "+var10+" "+var12+" "+var14+"\n"
f.write(strs)
strs=''