@@ -64,10 +64,6 @@ def run(self, overwrite: bool = False) -> "OutputReader":
6464 overwrite : bool
6565 If True, overwrite existing files.
6666 """
67- if not (self .workdir / f"{ self .modelname } .rvi" ).exists ():
68- # FIXME: No attribute 'write_rv' on Emulator [attribute-error]
69- self .write_rv (overwrite = overwrite )
70-
7167 self ._output_path = run (
7268 self .modelname , self .workdir , "output" , overwrite = overwrite
7369 )
@@ -296,21 +292,26 @@ def run(
296292 if not outputdir .is_absolute ():
297293 outputdir = (configdir / outputdir ).absolute ()
298294
299- if modelname is None :
300- results = [f for f in outputdir .rglob (f"*.*" ) if "_" not in f .stem ]
301- else :
302- results = [f for f in outputdir .rglob (f"{ modelname } _*.*" )]
303- if len (results ) > 0 :
304- if overwrite :
305- for f in results :
306- Path (f ).unlink ()
307- else :
308- msg = f"Output files already exist in { outputdir } . Use `overwrite=True` to overwrite."
309- raise FileExistsError (msg )
310-
311295 if not outputdir .exists ():
312296 Path (str (outputdir )).mkdir (parents = True )
313297
298+ # Parse RunName
299+ rvi = (configdir / f"{ modelname } .rvi" ).read_text ()
300+ run_name = parsers .parse_rv (rvi , "RunName" ) or ""
301+
302+ # Existing output files with the same :RunName - they would be overwritten
303+ files = outputdir .glob (f"{ run_name } *.*" )
304+
305+ # Remove existing output files if overwrite is True
306+ for f in files :
307+ if f .is_file ():
308+ if overwrite :
309+ f .unlink ()
310+ else :
311+ raise FileExistsError (
312+ "Output files using this `modelname` already exist. Use `overwrite=True` to remove them."
313+ )
314+
314315 # Launch executable, wait for completion.
315316 cmd = [RAVEN_EXEC_PATH , modelname , "-o" , str (outputdir )]
316317
0 commit comments