Source code for lightwin.scripts.reorder_output_figures

#!/usr/bin/env python3
"""Move all images in the same folder."""

import argparse
import shutil
from pathlib import Path


[docs] def _create_output_folder( simulation_folder: Path, out_folder_name: str = "images" ) -> Path: """Create the output folder.""" out_images = simulation_folder / out_folder_name if out_images.exists(): raise FileExistsError( f"{out_images = } already exists. Maybe you already run this script?" ) out_images.mkdir(exist_ok=False) return out_images
[docs] def _move_single_simulation_output_figures( simulation_folder: Path, out_images: Path, verbose: bool = False ) -> None: """Mpve the figures of a single simulation to ``out_images``.""" simulation_name = simulation_folder.stem new_filename = simulation_name simulation_files = simulation_folder.glob("**/*") images = [ x for x in simulation_files if x.is_file() and x.suffix == ".png" ] for image in images: new_folder = out_images / image.stem new_folder.mkdir(exist_ok=True) out_path = (new_folder / new_filename).with_suffix(".png") if verbose: print(f"{image} -> {out_path}") shutil.copy(image, out_path)
[docs] def reorder_output_figures( simulation_folder: Path | str, verbose: bool = False ) -> None: """Move all the output figures in a single folder.""" if isinstance(simulation_folder, str): simulation_folder = Path(simulation_folder) simulations = simulation_folder.glob("*/") simulation_folders = [x for x in simulations if not x.is_file()] out_images = _create_output_folder(simulation_folder) for simulation_folder in simulation_folders: _move_single_simulation_output_figures( simulation_folder, out_images, verbose=verbose )
[docs] def main(): parser = argparse.ArgumentParser("reorder_output_figures") parser.add_argument( "-f", "--folder", help="Folder where to look for output figures", type=str, required=True, ) parser.add_argument( "-v", "--verbose", help="Print origin and destination of files", action="store_true", # on/off flag required=False, ) args = parser.parse_args() reorder_output_figures(args.folder, args.verbose)
if __name__ == "__main__": main()