Как передать дату, используя argparse в Python 3.7+? - PullRequest
0 голосов
/ 12 февраля 2019
parser.add_argument("-s", "--start-date", dest="start_date", 
                    default=date.today() - timedelta(days = 1), 
                    type=date, help="Date in the format yyyymmdd")

Этот метод выдает ошибку

argument_test.py: error: argument -s/--start-date: invalid date value: 20181215

Я предполагаю, что полученный аргумент является строкой и несовместим, поскольку ожидаемый объект - дата.Итак, как мне на самом деле передать объект даты?Есть ли обходной путь?

Я мог бы разобрать строку и передать ее объекту даты.Но я хотел бы изучить другие прямые варианты.

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать функцию-оболочку, которая использует datetime.strptime для анализа заданной строки даты в желаемом формате:

parser.add_argument("-s", "--start-date", dest="start_date", 
                    default=date.today() - timedelta(days = 1), 
                    type=lambda d: datetime.strptime(d, '%Y%m%d').date(),
                    help="Date in the format yyyymmdd")
...