tipos de caminho de diretório com argparse

Meu script python precisa ler arquivos de um diretório passado na linha de comando. Eu defini um tipo readable_dir como abaixo para ser usado com argparse para validar que o diretório transmitido na linha de comando é existente e legível. Além disso, um valor padrão (/ tmp / non_existent_dir no exemplo abaixo) também foi especificado para o argumento do diretório. O problema aqui é que argparse chama readable_dir () no valor padrão, mesmo em uma situação em que um argumento de diretório é explicitamente passado na linha de comando. Isso faz com que o script seja excluído, já que o caminho padrão / tmp / non_existent_dir não existe em um contexto em que um diretório é explicitamente passado na linha de comando. Eu poderia contornar isso, não especificando um valor padrão e tornando este argumento obrigatório, ou adiando a validação até mais tarde no script, mas é uma solução mais elegante que qualquer um está ciente?

#!/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