From 32b69e8fb6de7fb0b22f53ce357557d936d17aa1 Mon Sep 17 00:00:00 2001 From: Lionel GUEZ <guez@lmd.ens.fr> Date: Thu, 29 Apr 2021 23:01:16 +0200 Subject: [PATCH] Extract format from input file name It is not enough to parse the input file name and extract the date because, when we process other dates, we have to construct file names in the same format. So do not use `parser.parse` for the input file name, try various formats and remember the one that works. --- Convert_Matlab/inst_eddies_v6.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Convert_Matlab/inst_eddies_v6.py b/Convert_Matlab/inst_eddies_v6.py index 4db61cae..34c1b4e2 100755 --- a/Convert_Matlab/inst_eddies_v6.py +++ b/Convert_Matlab/inst_eddies_v6.py @@ -96,8 +96,14 @@ def write(writers, cell, cyclone): if len(sys.argv) == 1: sys.exit("Required argument: first input .mat file") adt_file = sys.argv[1] dirname, basename = path.split(adt_file) -my_date = parser.parse(basename, yearfirst=True, dayfirst = False, - fuzzy = True).date() +valid_date_formats = ["adt_%Y-%m-%d.mat", "adt_%Y%m%d.mat"] + +for date_format in valid_date_formats: + try: + my_date = datetime.datetime.strptime(basename, date_format).date() + except ValueError: + pass + d = my_date - datetime.date(1950, 1, 1) d = d.days @@ -160,7 +166,7 @@ while True: my_date += datetime.timedelta(1) if my_date > final_date: break d += 1 - basename = my_date.strftime("adt_%Y-%m-%d.mat") + basename = my_date.strftime(date_format) adt_file = path.join(dirname, basename) nml = f90nml.Namelist() -- GitLab