Примите один конкретный аргумент, используя argparse - PullRequest
0 голосов
/ 07 октября 2018

Итак, вот мой вопрос: я хочу, чтобы моя программа принимала только одно конкретное значение, без которого она не пошла бы дальше.

Я знаю, что ключевое слово 'choices' можно использовать в качестве ответа здесь: Разрешение конкретных значений для аргумента Argparse

Но я хотел спросить, есть ли другой способ, потому что, если я скажу ему выбор, он откажется в помощи.

Я мог бы дать свою функцию, как будто условие для ее обработки, но надеялся использовать argparse.

Также, если кто-то мог бы предложить предложения по этому: мой аргумент в основном каталог пути, есть ли конкретная опция для того, что яможет использовать?

Или вы, ребята, думаете, что выбор «выбора» - мой лучший вариант.Программист начального уровня здесь.

Ответы [ 2 ]

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

Для этого вам не нужно argparse.

import sys, logging
if not 'mellor' in sys.argv[1:]:
    logging.error('Speak, friend, and enter')
    sys.exit(1)
0 голосов
/ 06 февраля 2019

ArgeParse : Вы можете передать аргумент с помощью "-year", за которым следует значение аргумента.Только в этом формате аргумент будет принят.

import os
import argparse
from datetime import datetime


def parse_arguments():
    parser = argparse.ArgumentParser(description='Process command line arguments.')
    parser.add_argument('-year', '--yearly', nargs = '*', help='yearly date', type=date_year)

    return parser.parse_args()


def date_year(date):
    if not date:
        return

    try:
        return datetime.strptime(date, '%Y')
    except ValueError:
        raise argparse.ArgumentTypeError(f"Given Date({date}) not valid")



def main():
    parsed_args = parse_arguments()

if __name__ == "__main__":
main()
...