python 批量處理nc檔案-字串拼接檔案,有規律檔案名
有檔案如下:
觀察檔案發現這些檔案名有一定的重復,重復的地方我們可以用字串表示,不一樣的地方可以用通配符(*)表示,
##拼接檔案名
str1='RSS_SMAP_SSS_L2C_r'
str2='*'#r26259_
str3='_FNL_V04.0.nc'
str4='*'
因為檔案中有部分是年月日(20200101)組成,所有這里需要加入一個回圈處理,
以后遇到由年月日組成的檔案名同樣可以處理,同時,由于每一年的每個2月時間會有不同(閏年),所以需要匯入一個模塊:calendar,具體使用條件可以自己在:bing上搜索:python calendar
import calendar
下面就是對于年月日寫回圈了
for year in range(2020,2021):#這里只展示2020年
for month in range(1,13):#表示12個月
for day in range(1,calendar.monthrange(year,month)[1]+1):#表示每個月的天數
同時,如果不確定是否成功,可以先用golb.glob 模糊查詢一下,匯入glob模塊:
import glob
加入檔案的路徑,拼接的檔案名
path='G:\\'#檔案路徑,一般需要兩個\,別問為什么,不用可能報錯
for year in range(2020,2021):
for month in range(1,2):
# for day in range(1,calendar.monthrange(year,month)[1]+1):
for day in range(1,3):
#我的檔案放在01號檔案夾下面,所以拼接的時候加入了:'%02.0f'%month+'\\'
fn='%02.0f'%month+'\\'+str1+str2+'_'+'%04.0f'%year+'%02.0f'%month+'%02.0f'%day+\
'T'+str4+'_'+str4+str3
f=glob.glob(path+fn) #這里需要絕對路徑
查詢之后會得到一個list,既你所擁有的所以檔案,之后就可以進行其他回圈處理啦~~~
舉個例子,我這個是nc檔案,之后對于每一個nc檔案進行回圈處理即可:
別忘了匯入模塊:import netCDF4 as nc
for file in f:
f1 =nc.Dataset(file,'r')
# print(f1)
lat = `f1.variables['cellat'][:].data`
lon = f1.variables['cellon'][:].data
time = f1.variables['time'][:].data
那就順便講一下nc檔案的讀取方式吧!
讀取nc檔案的辦法很多,我這里使用的是nc.Dataset(file,'r')file就是檔案名,字串(str)的格式,如 ‘20200101.nc’
你可以將其付給一個變數,并列印出來print(f1),查找你要輸出的資料,
之后f1.variables['你要的資料名稱'][:].data
全部的代碼如下:
import calendar
import glob
import netCDF4 as nc
str1='RSS_SMAP_SSS_L2C_r'
str2='*'
str3='_FNL_V04.0.nc'
str4='*'
path='G:\\'#檔案路徑
for year in range(2020,2021):
for month in range(1,13):
for day in range(1,calendar.monthrange(year,month)[1]+1):
fn='%02.0f'%month+'\\'+str1+str2+'_'+'%04.0f'%year+'%02.0f'%month+'%02.0f'%day+\
'T'+str4+'_'+str4+str3
f=glob.glob(path+fn)
for file in f:
f1 =nc.Dataset(file,'r')
# print(f1)
lat = f1.variables['cellat'][:].data
lon = f1.variables['cellon'][:].data
一個努力學習python的海洋小白
水平有限,歡迎指正!!!
歡迎評論、收藏,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277030.html
標籤:python
