- 积分
- 1655
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-12
- 最后登录
- 1970-1-1
|
NCL
系统平台: |
|
问题截图: |
- |
问题概况: |
批量读取多个以时间命名文件夹里的csv文件数据,请教是否有更好的办法?自己用systemfun读出错。 |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
1 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先把我的数据摆出来
........
.........
........
这是我要读的29个以时间命名的文件,但是时间不连续
I
每个以时间命名的文件夹里放着这样的十几个csv文件,不同时间文件夹下csv数据的命名相同,比如下面就是20160501和20160502的数据,命名都一模一样
我想将每一天的caotan.csv的前24个数值做平均,但是不知道怎么批量读取这29天文件里的caotan.csv数据,自己试着编了小程序,提示有错
fatal:List subscripting used on non-list variable, can't continue
fatal:["Execute.c":8567]:Execute: Error occurred at or near line 37 in file csv_read.ncl
请各位大神指教,实在不知道该怎么办了?
我的脚本:
;
begin
filename1=systemfunc("ls /public/home/huanglei/cmaqdata/2016*/Caotan.csv")
time_al= new((/29,24/),float,"No_FillValue")
oth_al = new((/29,24/),float,"No_FillValue")
xa_al = new((/29,24/),float,"No_FillValue")
tc_al = new((/29,24/),float,"No_FillValue")
bj_al = new((/29,24/),float,"No_FillValue")
xy_al = new((/29,24/),float,"No_FillValue")
wn_al = new((/29,24/),float,"No_FillValue")
ya_al = new((/29,24/),float,"No_FillValue")
hz_al = new((/29,24/),float,"No_FillValue")
yl_al = new((/29,24/),float,"No_FillValue")
ak_al = new((/29,24/),float,"No_FillValue")
sl_al = new((/29,24/),float,"No_FillValue")
do i=0,28
;---Read in file as array of strings so we can parse each line.
lines = asciiread(filename1,-1,"string")
nlines = dimsizes(lines)-1 ; First line is a header
;
; Start reading in the fields we care about:
; The first line is a header, so skip this.
;
delim = ","
time = str_get_field(lines(1:25),1,delim)
oth = str_get_field(lines(1:25),2,delim)
xa = str_get_field(lines(1:25),3,delim)
tc = str_get_field(lines(1:25),4,delim)
bj = str_get_field(lines(1:25),5,delim)
xy = str_get_field(lines(1:25),6,delim)
wn = str_get_field(lines(1:25),7,delim)
ya = str_get_field(lines(1:25),8,delim)
hz = str_get_field(lines(1:25),9,delim)
yl = str_get_field(lines(1:25),10,delim)
ak = str_get_field(lines(1:25),11,delim)
sl = str_get_field(lines(1:25),12,delim)
time_al(i,:)= time
oth_al(i,:) = oth
xa_al(i,:) = xa
tc_al(i,:) = tc
bj_al(i,:) = bj
xy_al(i,:) = xy
wn_al(i,:) = wn
ya_al(i,:) = ya
hz_al(i,:) = tc
yl_al(i,:) = bj
ak_al(i,:) = xy
sl_al(i,:) = wn
end do
time_all=ndtooned(time_al)
oth_all=ndtooned(oth_al)
xa_all=ndtooned(xa_al)
tc_all=ndtooned(tc_al)
bj_all=ndtooned(bj_al)
xy_all=ndtooned(xy_al)
wn_all=ndtooned(wn_al)
ya_all=ndtooned(xy_al)
hz_all=ndtooned(wn_al)
yl_all=ndtooned(ya_al)
ak_all=ndtooned(ak_al)
sl_all=ndtooned(sl_al)
print(time_all)
; calculate the avg
oth_avg=avg(oth_al)
xa_avg=avg(xa_all)
tc_avg=avg(tc_all)
bj_avg=avg(bj_all)
xy_avg=avg(xy_all)
wn_avg=avg(wn_all)
ya_avg=avg(xy_all)
hz_avg=avg(wn_all)
ya_avg=avg(ya_all)
ak_avg=avg(ak_all)
sl_avg=avg(sl_all)
ssx = hz_avg + ak_avg + sl_avg
nsx = ya_avg + ya_avg
end
|
|