← retour aux snippets

argparse: types Path et validation d'existence

Valider qu'un chemin existe ou non directement via argparse.

objectif

Valider qu’un chemin existe ou non directement via argparse.

code minimal

import argparse
from pathlib import Path

def existing_path(p: str) -> Path:
    path = Path(p)
    if not path.exists():
        raise argparse.ArgumentTypeError("chemin inexistant")
    return path

parser = argparse.ArgumentParser()
parser.add_argument("--input", type=existing_path, required=True)
args = parser.parse_args(["--input", "."])  # répertoire courant
print(isinstance(args.input, Path))  # attendu: True

utilisation

python app.py --input ./data

variante(s) utile(s)

import argparse
from pathlib import Path
def non_existing(p: str) -> Path:
    path = Path(p)
    if path.exists(): raise argparse.ArgumentTypeError("doit ne pas exister")
    return path
print(callable(non_existing))

notes

  • Retournez un Path pour éviter de re-parser ailleurs dans le code.
  • Personnalisez les messages d’erreur via ArgumentTypeError.