diff --git a/pcmdi_metrics/diurnal/scripts/compositeDiurnalStatistics.py b/pcmdi_metrics/diurnal/scripts/compositeDiurnalStatistics.py index c2a5f1414..76815b61c 100755 --- a/pcmdi_metrics/diurnal/scripts/compositeDiurnalStatistics.py +++ b/pcmdi_metrics/diurnal/scripts/compositeDiurnalStatistics.py @@ -173,8 +173,7 @@ def compute(params): str(args.lastyear), ) LSToutfile = "%s_%s_LocalSolarTimes.nc" % (varbname, dataname) - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) f = cdms2.open(os.path.join(args.results_dir, avgoutfile), "w") g = cdms2.open(os.path.join(args.results_dir, stdoutfile), "w") h = cdms2.open(os.path.join(args.results_dir, LSToutfile), "w") diff --git a/pcmdi_metrics/diurnal/scripts/computeStdOfDailyMeans.py b/pcmdi_metrics/diurnal/scripts/computeStdOfDailyMeans.py index 7ba255b27..823058e75 100755 --- a/pcmdi_metrics/diurnal/scripts/computeStdOfDailyMeans.py +++ b/pcmdi_metrics/diurnal/scripts/computeStdOfDailyMeans.py @@ -106,8 +106,7 @@ def compute(params): ) except Exception as err: print("Failed for model: %s with error: %s" % (dataname, err)) - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) g = cdms2.open(os.path.join(args.results_dir, stdoutfile), "w") g.write(stdvalues) g.close() diff --git a/pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py b/pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py index 3e50e46cf..106eebe62 100755 --- a/pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py +++ b/pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py @@ -83,8 +83,7 @@ def main(): ascFile.month = monthname ascname = os.path.join(os.path.abspath(args.results_dir), ascFile()) - if not os.path.exists(os.path.dirname(ascname)): - os.makedirs(os.path.dirname(ascname)) + os.makedirs(os.path.dirname(ascname), exist_ok=True) fasc = open(ascname, "w") gridptlats = [float(x) for x in args.lats] diff --git a/pcmdi_metrics/diurnal/scripts/savg_fourier.py b/pcmdi_metrics/diurnal/scripts/savg_fourier.py index 734dd20d0..16109ea41 100755 --- a/pcmdi_metrics/diurnal/scripts/savg_fourier.py +++ b/pcmdi_metrics/diurnal/scripts/savg_fourier.py @@ -225,8 +225,7 @@ def spacevavg(tvarb1, tvarb2, sftlf, model): return outD print("Preparing to write output to JSON file ...") - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) jsonFile = populateStringConstructor(args.outnamejson, args) jsonFile.month = monthname diff --git a/pcmdi_metrics/diurnal/scripts/std_of_dailymeans.py b/pcmdi_metrics/diurnal/scripts/std_of_dailymeans.py index 9f4ce2256..79587a6e9 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_dailymeans.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_dailymeans.py @@ -131,8 +131,7 @@ def compute(param): print("TEMPLATE NAME:", template()) print("Preparing to write output to JSON file ...") - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) jsonFile = populateStringConstructor(args.outnamejson, args) jsonFile.month = monthname diff --git a/pcmdi_metrics/diurnal/scripts/std_of_hourlyvalues.py b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvalues.py index 2e7c7357f..4f0d79574 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_hourlyvalues.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvalues.py @@ -142,8 +142,7 @@ def compute(param): # lonrange = (285.0, 295.0) print("Preparing to write output to JSON file ...") - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) jsonFile = populateStringConstructor(args.outnamejson, args) jsonFile.month = monthname diff --git a/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycle.py b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycle.py index 3df10fd50..0abb14c14 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycle.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycle.py @@ -143,8 +143,7 @@ def compute(param): # lonrange = (285.0, 295.0) print("Preparing to write output to JSON file ...") - if not os.path.exists(args.results_dir): - os.makedirs(args.results_dir) + os.makedirs(args.results_dir, exist_ok=True) jsonFile = populateStringConstructor(args.outnamejson, args) jsonFile.month = monthname diff --git a/pcmdi_metrics/enso/enso_driver.py b/pcmdi_metrics/enso/enso_driver.py index 3ed6072f4..c648c5479 100755 --- a/pcmdi_metrics/enso/enso_driver.py +++ b/pcmdi_metrics/enso/enso_driver.py @@ -125,8 +125,7 @@ # Create output directory for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print("output directory for " + output_type + ":" + outdir(output_type=output_type)) # list of variables diff --git a/pcmdi_metrics/enso/scripts_pcmdi/enso_driver_obsOnly.py b/pcmdi_metrics/enso/scripts_pcmdi/enso_driver_obsOnly.py index 9582bc92e..74bb74ee1 100755 --- a/pcmdi_metrics/enso/scripts_pcmdi/enso_driver_obsOnly.py +++ b/pcmdi_metrics/enso/scripts_pcmdi/enso_driver_obsOnly.py @@ -104,8 +104,7 @@ # Create output directory for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # list of variables diff --git a/pcmdi_metrics/enso/scripts_pcmdi/parallel_driver.py b/pcmdi_metrics/enso/scripts_pcmdi/parallel_driver.py index 7eae1bafe..5a030dc97 100755 --- a/pcmdi_metrics/enso/scripts_pcmdi/parallel_driver.py +++ b/pcmdi_metrics/enso/scripts_pcmdi/parallel_driver.py @@ -94,8 +94,7 @@ # Create output directories # ------------------------------------------------- for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # ================================================= diff --git a/pcmdi_metrics/mean_climate/scripts/pcmdi_compute_climatologies-CMOR.py b/pcmdi_metrics/mean_climate/scripts/pcmdi_compute_climatologies-CMOR.py index 03e2aecd0..24c6d9bfc 100644 --- a/pcmdi_metrics/mean_climate/scripts/pcmdi_compute_climatologies-CMOR.py +++ b/pcmdi_metrics/mean_climate/scripts/pcmdi_compute_climatologies-CMOR.py @@ -668,8 +668,7 @@ def runClim(A): print( "Your Python does not have CMOR, using regular cdms to write out files" ) - if not os.path.exists(A.results_dir): - os.makedirs(A.results_dir) + os.makedirs(A.results_dir, exist_ok=True) end_tc = tc[-1].add(1, cdtime.Month) # Populate fout template with values diff --git a/pcmdi_metrics/mjo/lib/debug_chk_plot.py b/pcmdi_metrics/mjo/lib/debug_chk_plot.py index 59fb2b53b..eb30129a2 100644 --- a/pcmdi_metrics/mjo/lib/debug_chk_plot.py +++ b/pcmdi_metrics/mjo/lib/debug_chk_plot.py @@ -7,8 +7,7 @@ def debug_chk_plot(d_seg_x_ano, Power, OEE, segment_year, daSeaCyc, segment_ano_year): - if not os.path.exists("debug"): - os.makedirs("debug") + os.makedirs("debug", exist_ok=True) """ FIX ME --- x = vcs.init() diff --git a/pcmdi_metrics/mjo/lib/mjo_metric_calc.py b/pcmdi_metrics/mjo/lib/mjo_metric_calc.py index 6785915d2..ea6962071 100644 --- a/pcmdi_metrics/mjo/lib/mjo_metric_calc.py +++ b/pcmdi_metrics/mjo/lib/mjo_metric_calc.py @@ -159,15 +159,13 @@ def mjo_metric_ewr_calculation( # NetCDF output if nc_out: - if not os.path.exists(outdir(output_type="diagnostic_results")): - os.makedirs(outdir(output_type="diagnostic_results")) + os.makedirs(outdir(output_type="diagnostic_results"), exist_ok=True) fout = os.path.join(outdir(output_type="diagnostic_results"), output_filename) write_netcdf_output(OEE, fout) # Plot if plot: - if not os.path.exists(outdir(output_type="graphics")): - os.makedirs(outdir(output_type="graphics")) + os.makedirs(outdir(output_type="graphics"), exist_ok=True) fout = os.path.join(outdir(output_type="graphics"), output_filename) title = ( mip.upper() diff --git a/pcmdi_metrics/mjo/lib/post_process_plot.py b/pcmdi_metrics/mjo/lib/post_process_plot.py index b9b60e0a7..b92a8f697 100644 --- a/pcmdi_metrics/mjo/lib/post_process_plot.py +++ b/pcmdi_metrics/mjo/lib/post_process_plot.py @@ -22,8 +22,7 @@ def main(): imgdir = "/work/lee1043/imsi/result_test/mjo_metrics/plot_test" # imgdir = '/p/user_pub/pmp/pmp_results/pmp_v1.1.2/graphics/mjo/'+mip+'/historical/'+version - if not os.path.exists(imgdir): - os.makedirs(imgdir) + os.makedirs(imgdir, exist_ok=True) ncfile_list = glob.glob(os.path.join(datadir, "*.nc")) diff --git a/pcmdi_metrics/mjo/mjo_metrics_driver.py b/pcmdi_metrics/mjo/mjo_metrics_driver.py index b95bb8187..0dc44c676 100755 --- a/pcmdi_metrics/mjo/mjo_metrics_driver.py +++ b/pcmdi_metrics/mjo/mjo_metrics_driver.py @@ -137,8 +137,7 @@ # Create output directory for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # Generate CMEC compliant json diff --git a/pcmdi_metrics/mjo/scripts/parallel_driver.py b/pcmdi_metrics/mjo/scripts/parallel_driver.py index 99f287549..d43cc9db5 100755 --- a/pcmdi_metrics/mjo/scripts/parallel_driver.py +++ b/pcmdi_metrics/mjo/scripts/parallel_driver.py @@ -91,8 +91,7 @@ # Create output directories # ------------------------------------------------- for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # ================================================= diff --git a/pcmdi_metrics/monsoon_sperber/driver_monsoon_sperber.py b/pcmdi_metrics/monsoon_sperber/driver_monsoon_sperber.py index a92302d2f..60b16dcce 100644 --- a/pcmdi_metrics/monsoon_sperber/driver_monsoon_sperber.py +++ b/pcmdi_metrics/monsoon_sperber/driver_monsoon_sperber.py @@ -139,8 +139,7 @@ def tree(): # Create output directory for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # Debug diff --git a/pcmdi_metrics/precip_variability/scripts_pcmdi/calc_ratio.py b/pcmdi_metrics/precip_variability/scripts_pcmdi/calc_ratio.py index fca91d4b3..fd1400a45 100644 --- a/pcmdi_metrics/precip_variability/scripts_pcmdi/calc_ratio.py +++ b/pcmdi_metrics/precip_variability/scripts_pcmdi/calc_ratio.py @@ -39,8 +39,7 @@ / psdmfm_ref["RESULTS"][dat_ref][frc][dom][frq] ) - if not (os.path.isdir(outdir)): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) outfile = open(os.path.join(outdir, model.split("/")[-1]), "w") json.dump(psdmfm, outfile, sort_keys=True, indent=4, separators=(",", ": ")) outfile.close() diff --git a/pcmdi_metrics/precip_variability/variability_across_timescales_PS_driver.py b/pcmdi_metrics/precip_variability/variability_across_timescales_PS_driver.py index ca71d87e2..c606be499 100644 --- a/pcmdi_metrics/precip_variability/variability_across_timescales_PS_driver.py +++ b/pcmdi_metrics/precip_variability/variability_across_timescales_PS_driver.py @@ -39,11 +39,7 @@ str(outdir_template(output_type="%(output_type)", mip=mip, case_id=case_id)) ) for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - try: - os.makedirs(outdir(output_type=output_type)) - except FileExistsError: - pass + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # Check data in advance diff --git a/pcmdi_metrics/variability_mode/scripts_pcmdi/parallel_driver.py b/pcmdi_metrics/variability_mode/scripts_pcmdi/parallel_driver.py index b7dbd01a4..eed0ce129 100755 --- a/pcmdi_metrics/variability_mode/scripts_pcmdi/parallel_driver.py +++ b/pcmdi_metrics/variability_mode/scripts_pcmdi/parallel_driver.py @@ -99,8 +99,7 @@ # Create output directories # ------------------------------------------------- for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # ================================================= diff --git a/pcmdi_metrics/variability_mode/variability_modes_driver.py b/pcmdi_metrics/variability_mode/variability_modes_driver.py index a94ac6d0d..2d4741541 100755 --- a/pcmdi_metrics/variability_mode/variability_modes_driver.py +++ b/pcmdi_metrics/variability_mode/variability_modes_driver.py @@ -269,8 +269,7 @@ # Create output directories # ------------------------------------------------- for output_type in ["graphics", "diagnostic_results", "metrics_results"]: - if not os.path.exists(outdir(output_type=output_type)): - os.makedirs(outdir(output_type=output_type)) + os.makedirs(outdir(output_type=output_type), exist_ok=True) print(outdir(output_type=output_type)) # ================================================= diff --git a/tests/deprecated/basepmpgraphics.py b/tests/deprecated/basepmpgraphics.py index 6e2206d4c..51e148ffa 100755 --- a/tests/deprecated/basepmpgraphics.py +++ b/tests/deprecated/basepmpgraphics.py @@ -40,8 +40,7 @@ def setUp(self): # self.x.open() self.orig_cwd = os.getcwd() self.pngsdir = "tests_png" - if not os.path.exists(self.pngsdir): - os.makedirs(self.pngsdir) + os.makedirs(self.pngsdir, exist_ok=True) self.basedir = os.path.join(os.path.dirname(__file__), "graphics") diff --git a/tests/test_resources.py b/tests/test_resources.py index add768857..67058c0bf 100644 --- a/tests/test_resources.py +++ b/tests/test_resources.py @@ -9,7 +9,7 @@ def test_conda_env(tmpdir): pmp_share_path = os.path.join(conda_prefix, "share", "pmp") - os.makedirs(pmp_share_path) + os.makedirs(pmp_share_path, exist_ok=True) with mock.patch.dict(os.environ, {"CONDA_PREFIX": conda_prefix}): path = resources.resource_path() @@ -27,7 +27,7 @@ def test_conda_env_no_exist(resource_filename, getcwd, tmpdir): getcwd_path = os.path.join(tmpdir, "share", "pmp") - os.makedirs(getcwd_path) + os.makedirs(getcwd_path, exist_ok=True) getcwd.return_value = tmpdir