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
处理它会更好。