本人研究所需的数据从google drive下载,分多次下载过程中可能存在数据缺漏的问题。因此使用python编写程序检查下载数据的完整性。
整体思路如下:
下载的数据为nc格式,时间分辨率为三小时,因此每天分别有8个文件。文件命名格式如下
1. 从每个文件名中提起出天,存入数组c
2. 检查数组c中每个元素的个数是否为8,输出缺小时的天。去除c中的重复元素,获得namelist
3. 生成1-365天的数组numlist,输出namelist中不在numlist中的元素,即为缺失的天
完整代码如下:
import os
import numpy as np
def readname():
filePath = 'J://MSWEP_3hours//2017'
name = os.listdir(filePath)
return name
if __name__ == "__main__":
name = readname()
c=[]
lack_day=[]
#取出文件名中的日放入数组
for i in name:
a=int(i[4:5])*100+int(i[5:6])*10+int(i[6:7])
c.append(a)
#print(i)
#检查每日是否有8个文件
for i in c:
if c.count(i)!= 8:
lack_day.append(i)
print(set(lack_day)) #删除重复值
print(len(set(lack_day))) #统计缺失小时的日的数量
namelist = list(set(c))
#print(namelist)
#通过1-365的数组,检查缺失的天
numlist = list(range(1, 366))
lacklist = np.setdiff1d(numlist, namelist)
print(lacklist)
print(len(lacklist)) #统计缺失数据的天数