типы путей к каталогам с помощью argparse

Мой скрипт Python должен читать файлы из каталога, переданного в командной строке. Ниже я определил тип readable_dir, который будет использоваться с argparse для проверки того, что каталог, переданный в командной строке, существует и доступен для чтения. Кроме того, значение по умолчанию (/ tmp / non_existent_dir в приведенном ниже примере) также было указано для аргумента каталога. Проблема в том, что argparse вызывает readable_dir () для значения по умолчанию даже в ситуации, когда аргумент каталога явно передается в командной строке. Это приводит к тому, что сценарий дурачит, поскольку путь по умолчанию / tmp / non_existent_dir не существует в контексте, где каталог явно передается в командной строке. Я мог бы обойти это, не указав значение по умолчанию и сделав этот аргумент обязательным, или отложив проверку на более поздний срок в сценарии, но является ли более элегантным решением, о котором кто-нибудь знает?

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

Ответы на вопрос(3)

Ваш ответ на вопрос