Functional Python
Small things can make you smile when you have the Aha! moment. It seems that these few days of 7li7w are starting to have real effects in the way I think when programming. Today, I was faced to a simple but annoying problem. I had about 60 Formosat 2 acquisitions that I needed to use. These images have been pre-processed (thank Olivier!) and, because of historical reasons they are presented like this:
Sudouest_20060206_MS_fmsat_ortho_surf_8m.B1 Sudouest_20060206_MS_fmsat_ortho_surf_8m.B2 Sudouest_20060206_MS_fmsat_ortho_surf_8m.B3 Sudouest_20060206_MS_fmsat_ortho_surf_8m.B4 Sudouest_20060206_MS_fmsat_ortho_surf_8m.hdr
That is, a single ENVI header file and the 4 bands in one file each. And
the same thing for every single acquisition date. I wanted to have the
list of all the acquisition dates (the 20060206
above). Since this was
not a one shot operation, I wanted something a little bit more generic
than opening the directory containing the images in an Emacs Dired
buffer and copying and pasting the dates, so I have used Python. The
thing is solved in a single line of code:
dates = [fil.split('_')[1] for fil in os.listdir(imageDir) if(fil.split('.')[-1]=="hdr")]
I use a list comprehension, where for each file in the imageDir
directory (os.listdir
), if the extension is hdr
I keep the second
chunk of the name of the file when _
is used as a separator.