Thanks Russ, so how do I then loop over the entries:
let filenames = SPAWN("/bin/ls -1 basinmask/*.nc")
! How do I loop over filenames?
!REPEAT/RANGE=1: ($filenames)
!
! Then plot
use ($filename)
set win 1
sha basinmask4
frame/file="($outpath)($filename).png" ! How to I replace *.nc in the filename with *.png?
cancel win 1
Cheers,
P
From: <owner-ferret_users@xxxxxxxx> on behalf of Russ Fiedler <russell.fiedler@xxxxxxxx>
Date: Monday, May 1, 2017 at 5:36 PM
To: "ferret_users@xxxxxxxx" <ferret_users@xxxxxxxx>
Subject: Re: [ferret_users] Looping over multiple input files to plot file variables and save to png
Hi Paul,
Rather than writing your filenames to a file you can create a variable using the SPAWN function directly.
let filenames = SPAWN("/bin/ls -1 basinmask/*.nc")
Another way would be to create the file as you are at the moment and read it in via a spawn and 'cat' command
let filenames = SPAWN("cat filenames.txt")
I'd prefer the first method.
Cheers,
Russ
On 02/05/17 08:20, Durack, Paul J. wrote:
I have 51 netcdf files in a directory, and want to loop over each of these and for each plot the contents of a gridded variable and save this to a png file, using pyferret 7.1
I’ve been struggling with syntax, and am getting “**TMAP ERR: non-existent or not on line filenames.txt”, with the following partial code:
spawn "ls basinmask/*.nc > filenames.txt" ! This is generating a file, but if I could create the filelist in memory this step could be removed
FILE/FORMAT=DELIMITED/var="filenames" filenames.txt ! < This generates the error
say "processing: ",($file) ! don’t get to here
The plot and save command will be a simple:
> sha basinmask4 ! Each file contains the same named variable
> frame/file=”($mypath)($myfile).png”
Can someone help me out to fill in the missing logic/syntax here?
Thanks,
P