Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 缺少的参数不显示已定义的错误消息_Python - Fatal编程技术网

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

Python 缺少的参数不显示已定义的错误消息,python,Python,这是我的第一篇博文,请原谅我遗漏的信息或愚蠢的问题。因此,我尝试运行一个命令行python脚本(我在Windows机器中),将其传递2个参数,检查参数是否传递,如果没有,则显示特定于该参数的错误消息。我得到一个缺少参数的错误,但它没有显示我想要的消息(在函数中定义)。我不确定我是否没有正确地创建函数,或者是否遗漏了什么。我还想检查传递的参数是否为正确的字符串,而不是int,但这些参数似乎默认为字符串,因此检查它们是否为int也不起作用 有人能给我一个提示或给我指出正确的方向吗?我一直在网上搜索,

这是我的第一篇博文,请原谅我遗漏的信息或愚蠢的问题。因此,我尝试运行一个命令行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

非常感谢你的帮助

下面的代码应该可以为您完成这项工作

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

`由于argparse停止流并引发异常,因此未调用check_args`。你不介意吗?你不需要这张支票
parse_args
本身阻止您将
args.o
设置为您认为需要检查的值。您真正想要在
check_args
内部进行的检查类似于
os.path.exists(output_path)
。太棒了!!!非常感谢大家的评论。在大家的投入下,我找到了解决问题的方法,学到了很多。我真的很感激所有的帮助。OP正在使用这个选项;他们只是省略了必要的论点。