使用argparse接受一个特定的参数

时间:2018-10-07 17:00:58

标签: python python-3.x argparse

所以这是我的问题: 我希望我的程序仅接受一个特定的值,否则它将无法继续。

我知道'choices'关键字可以在此处用作答案:Allowing specific values for an Argparse argument

但是我想问一下是否还有另一种方法,因为如果我告诉它选择,它会在帮助中放弃它。

我可以给我函数以条件来处理它,但是希望使用argparse。

如果有人对此提出建议,我的论点基本上是路径目录,是否有我可以使用的特定选项?

或者你们认为“选择”是我最好的选择。 这里是初级程序员。

2 个答案:

答案 0 :(得分:0)

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()

答案 1 :(得分:0)

您不需要argparse

import sys, logging
if not 'mellor' in sys.argv[1:]:
    logging.error('Speak, friend, and enter')
    sys.exit(1)