缺少参数不显示已定义的错误消息

时间:2020-09-10 12:51:43

标签: python

这是我的第一篇文章,因此请原谅任何缺少的信息或愚蠢的问题。因此,我想做的是运行命令行python脚本(我在Windows计算机中),将其传递2个参数,检查是否参数已传递,如果未传递,则显示特定于该参数的错误消息。我收到一个缺少的参数错误,但未显示我想要的消息(在函数中定义)。我不确定是否没有正确创建函数,或者是否缺少某些东西。我还想检查传递的参数是否是正确的字符串,而不是int,但似乎参数默认为字符串,因此检查它们是否为int也不起作用。

有人可以给我提示或指向正确的方向吗?我一直在网上搜索,但还没有找到任何可以回答这个问题的信息。我是python的新手,因此仍在学习如何正确阅读文档(似乎对于我来说了解文档的示例太少了)。这是我正在使用的代码:

    import argparse

    #parser to create and grab args from CLI

    parser = argparse.ArgumentParser()
    parser.add_argument("-i", help="File path of original folder")
    parser.add_argument("-o", help="File path of output folder")
    args = parser.parse_args()

    #check if args have been passed and display error if missing

    def check_args(input_path,output_path):

        if input_path == None:
            print("Please input a valid folder path for original folder destination")
        elif output_path == None:
            print("Please input a valid folder path for output folder destination")
        else:
            return args

    #grab first and sec argument

    input_path = args.i
    output_path = args.o

    check_args(input_path, output_path)

输出:

    Program>python JPGtoPNG_conv.py -i 3 -o
    usage: JPGtoPNG_conv.py [-h] [-i I] [-o O]
    JPGtoPNG_conv.py: error: argument -o: expected one argument

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

下面的代码应该为您完成工作

import argparse
import sys


class MyParser(argparse.ArgumentParser):
    def error(self, message):
        sys.stderr.write('error: %s\n' % message)
        self.print_help()
        sys.exit(2)


parser = MyParser()
parser.add_argument("-i", help="File path of original folder", required=True)
parser.add_argument("-o", help="File path of output folder", required=True)
args = parser.parse_args()

# grab first and sec argument

input_path = args.i
output_path = args.o