2016-07-21 8 views
0

длинный рассказ короткий, я рисую климатические данные из файла netCDF. Моя единственная проблема, мне приходится составлять данные из десятков этих файлов, каждая из которых имеет более ста точек данных. К счастью, все они одинаково отформатированы, и их имена находятся в порядке возрастания (например: file1.nc, file2.nc ...). Это мой код (незавершенный, так как мне нужно изменить маркеры и цвета маркеров):python: Построение данных из нескольких файлов netCDF

В любом случае, я хочу построить более одного файла (примерно на 20 для начала). Есть ли способ сделать это? Кроме того, если вы, ребята, знаете, как настроить цветную панель на основе переменных данных, что было бы здорово.

Спасибо!

+2

вы знаете о Do петли? –

+0

Не могу сказать, что я ... Новичок программист – xyzman

ответ

0

Сделать пустой массив:

data =[] 

Составьте список имен файлов:

flist=["001.dat","002.dat",...] 

затем перебирать этот список:

for fn in flist: 
     data.append(netcdf_file(fn,'r')) 

Теперь вы можете обратиться к вашим данным таких как:

data[0] 
data[1] 

т.д.

+1

, если все файлы находятся в одной папке, вы можете использовать glob, чтобы найти их все: 'filelist = glob.glob ('/ Users/epsuser/Dropbox/Argo/Data/2/*. Nc ') ' – story645

+0

это^было чрезвычайно полезно! Большое спасибо! – xyzman

0

по крайней мере, plt.savefig("some unique name") означает, что вы можете создать их в цикле без необходимости сохранения участков/закрыть их по отдельности.

Я также предлагаю получить комфортно с object oriented interface:

fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 
map = Basemap(projection='robin',lon_0=0,resolution='l',ax=ax) 
#keep all your code 
cs = map.scatter(x,y,data) 
fig.savefig("{}".format(some unique identifier)) 

ETA: И вы можете найти все файлы с помощью Glob, если они находятся в той же папке:

import glob 
filelist = glob.glob('/Users/epsuser/Dropbox/Argo/Data/*.nc') 
for fl in filelist: 
    ncfile = netcdf_file(fname,'r') 
    #the rest of your reading code 
    fig = plt.figure() 
    #etc...