Eu tenho um script python que requer algumas entradas de linha de comando e estou usando argparse para analisá-los. Achei a documentação um pouco confusa e não consegui encontrar uma maneira de verificar se há um formato nos parâmetros de entrada. O que quero dizer com verificação de formato é explicado com este script de exemplo:
parser.add_argument('-s', "--startdate", help="The Start Date - format YYYY-MM-DD ", required=True)
parser.add_argument('-e', "--enddate", help="The End Date format YYYY-MM-DD (Inclusive)", required=True)
parser.add_argument('-a', "--accountid", type=int, help='Account ID for the account for which data is required (Default: 570)')
parser.add_argument('-o', "--outputpath", help='Directory where output needs to be stored (Default: ' + os.path.dirname(os.path.abspath(__file__)))
Preciso verificar se há opção -s
e se -e
a entrada do usuário está no formato YYYY-MM-DD
. Existe uma opção em argparse que eu não sei que realiza isso.
fonte
valid_date()
que o argumento fornecido é uma string?Apenas para complementar a resposta acima, você pode usar uma função lambda se quiser mantê-la em uma linha. Por exemplo:
Tópico antigo, mas a questão ainda era relevante para mim, pelo menos!
fonte
invalid <lambda> value
Para outras pessoas que conseguiram isso por meio de mecanismos de pesquisa: no Python 3.7, você pode usar o
.fromisoformat
método de classe padrão em vez de reinventar a roda para datas compatíveis com ISO-8601, por exemplo:fonte
dateutil
o analisador ISO de usa vários fmts adicionais que ainda são compatíveis com ISO 8601-2004. Você pode usarimport dateutil.parser
->type=dateutil.parser.isoparse
outype=dateutil.parser.parse
dateutil
é um pacote de terceiros. Seria preciso avaliar seus benefícios em relação ao (pequeno) incômodo de instalá-lo extra. YMMV.