typy ścieżek katalogów z argparse

Mój skrypt Pythona musi odczytać pliki z katalogu przekazanego w wierszu poleceń. Zdefiniowałem typ readable_dir jak poniżej, aby był używany z argparse do sprawdzania, czy katalog przekazany w wierszu poleceń jest istniejący i czytelny. Dodatkowo dla argumentu katalogu podano również wartość domyślną (/ tmp / non_existent_dir w poniższym przykładzie). Problem polega na tym, że argparse wywołuje readable_dir () na wartości domyślnej nawet w sytuacji, gdy argument katalogu jest jawnie przekazany w wierszu poleceń. Powoduje to, że skrypt przestaje działać, ponieważ domyślna ścieżka / tmp / non_existent_dir nie istnieje w kontekście, w którym katalog jest jawnie przekazywany w wierszu poleceń. Mogę to obejść, nie określając wartości domyślnej i czyniąc ten argument obowiązkowym, lub odraczając walidację do późniejszego skryptu, ale czy jest to bardziej eleganckie rozwiązanie, o którym każdy wie?

#!/usr/bin/python
import argparse
import os

def readable_dir(prospective_dir):
  if not os.path.isdir(prospective_dir):
    raise Exception("readable_dir:{0} is not a valid path".format(prospective_dir))
  if os.access(prospective_dir, os.R_OK):
    return prospective_dir
  else:
    raise Exception("readable_dir:{0} is not a readable dir".format(prospective_dir))

parser = argparse.ArgumentParser(description='test', fromfile_prefix_chars="@")
parser.add_argument('-l', '--launch_directory', type=readable_dir, default='/tmp/non_existent_dir')
args = parser.parse_args()

questionAnswers(3)

yourAnswerToTheQuestion