Python 我需要从命令行验证参数

Python 我需要从命令行验证参数,python,Python,我需要确保,当我从命令行运行此命令且不输入任何参数时,会显示一条消息(请参见最后一条打印语句),但我得到的是: C:\> python submitted.py (no arguments here) usage: submitted.py [-h] user_string submitted.py: error: the following arguments are required: user_string 我怎样才能做到这一点? 代码如下: import argparse ar

我需要确保,当我从命令行运行此命令且不输入任何参数时,会显示一条消息(请参见最后一条打印语句),但我得到的是:

C:\> python submitted.py (no arguments here)
usage: submitted.py [-h] user_string
submitted.py: error: the following arguments are required: user_string
我怎样才能做到这一点? 代码如下:

import argparse

argparser = argparse.ArgumentParser()
argparser.add_argument('user_string', help='User string')
args = argparser.parse_args()
user_string = 0

# loop to check all conditions
if args.user_string:
    user_string = args.user_string
    # this will put the inputed words into a list
    words_to_sort = user_string.split()
    # Checking the number of inputs by user to meet criteria
    if len(words_to_sort) < 2:
        # alerts user to input more than 1 word
        print("Invalid command line arguments to program. Please, supply two or more strings to sort.")
    else:
        # sorts the list alphabetically
        words_to_sort.sort()
        # looping thru the list to display them
        for word in words_to_sort:
            # displaying the list
            print(word)
else:
    # if criteria not met user gets another message
    if (user_string < 1):
        print("Please input your words to be sorted")
import argparse
argparser=argparse.ArgumentParser()
argparser.add_参数('user_string',help='user string')
args=argparser.parse_args()
用户\字符串=0
#循环检查所有条件
如果args.user\u字符串:
user\u string=args.user\u string
#这将把输入的单词放入一个列表中
words\u to\u sort=user\u string.split()
#检查用户输入的数量以满足标准
如果len(单词到排序)<2:
#提醒用户输入超过1个单词
打印(“程序的命令行参数无效。请提供两个或更多字符串进行排序。”)
其他:
#按字母顺序对列表排序
单词排序
#在列表中循环以显示它们
对于单词中的单词进行排序:
#显示列表
打印(word)
其他:
#如果不符合条件,用户将收到另一条消息
如果(用户字符串<1):
打印(“请输入要排序的单词”)

但您确实会看到一条错误消息
ArgumentParser
会为您执行此操作,因此您无需担心。是否有任何方法可以更改此错误?这就是我的任务。相关但可能不是您想要的解决方案:或者,您可以将代码包装在一个
try except
中,然后重新显示您自己的自定义异常。但这太过分了。重新阅读作业,以确保它真正要求您这样做,因为通常您不想重新编写现有功能
argparse
允许出于这个确切原因使用强制参数和可选参数。如果不希望
ArgumentParser
处理缺少的参数,可以将参数设置为可选参数,然后自己处理错误。请参阅
ArgumentParser
文档以了解相关信息。如果这是你的作业,那很好,但除此之外,这是一个坏主意-让
ArgumentParser
处理它会更好。