python执行脚本时的命令行选项,Python解析器的命令行选项

本文介绍了Python的argparse模块,用于处理命令行参数。通过ArgumentParser创建解析器对象,设置参数并生成帮助消息。示例包括必需参数、默认值、类型检查和可选参数。argparse模块简化了命令行工具的创建,提供了错误处理和用户友好的帮助选项。
摘要由CSDN通过智能技术生成

从命令行执行时,通常我们需要将参数传递给Python脚本。但是,当所需的参数未按相同数量或类型或顺序提供时,脚本会引发异常。那就是需要正确解析命令行参数的地方。

该argparse模块为编写非常容易使用命令行界面工具。它处理如何解析sys.argv列表中收集的参数,自动生成帮助并在给出无效选项时发出错误消息。

设计命令行界面的第一步是设置解析器对象。这是通过argparse模块中的ArgumentParser()函数完成的。可以给函数一个说明字符串作为描述参数。

首先,我们的脚本将从没有任何参数的命令行执行。仍然使用解析器对象的parse_args()方法,因为没有给出任何参数,所以它什么也不做。import argparse

parser = argparse.ArgumentParser(description="sample argument parser")

args=parser.parse_args()

当上述脚本运行时C:\python36>python argparser1.py

C:\python36>python argparser1.py --help

usage: argparser1.py [-h]

sample argument parser

optional arguments:

-h, --help show this help message and exit

第二个命令行用法提供–help选项,该选项将生成一条帮助消息,如下所示。–help参数默认情况下可用。

现在让我们定义一个参数,该参数是脚本运行所必需的,如果没有给定,脚本应该抛出错误。在这里,我们通过add_argument()方法定义参数'user' 。import argparse

parser=argparse.ArgumentParser(description="sample argument parser")

parser.add_argument("user")

args = parser.parse_args()

if args.user=="Admin":

print ("Hello Admin")

else:

print ("Hello Guest")

现在,该脚本的帮助以“用户”的形式显示一个位置参数。该程序检查其值是否为“ Admin”,并打印相应的消息。C:\python36>python argparser1.py --help

usage: argparser1.py [-h] user

sample argument parser

positional arguments:

user

optional arguments:

-h, --help show this help message and exit

C:\python36>python argparser1.py Admin

Hello Admin

C:\python36>python argparser1.py temp

Hello Guest

我们可以在add_argument()方法中为参数指定默认值。import argparse

parser=argparse.ArgumentParser(description="sample argument parser")

parser.add_argument("user", nargs='?',default="Admin")

args=parser.parse_args()

if args.user=="Admin":

print ("Hello Admin")

else:

print ("Hello Guest")

这里的nargs是应该使用的命令行参数的数量。'?'。如果可能,将从命令行使用一个参数,并将其作为单个项目产生。如果不存在命令行参数,则将生成默认值。C:\python36>python argparser1.py

Hello Admin

C:\python36>python argparser1.py Admin

Hello Admin

C:\python36>python argparser1.py test

Hello Guest

默认情况下,所有参数都视为字符串。为了明确提到类型的参数,使用类型参数中的add_argument()方法。所有Python数据类型都是type的有效值。import argparse

parser=argparse.ArgumentParser(description="add numbers")

parser.add_argument("first", type=int)

parser.add_argument("second", type=int)

args = parser.parse_args()

x = args.first

y = args.second

z = x+y

print ('addition of {} and {} = {}'.format(x,y,z))

C:\python36>python argparser2.py 2 3

addition of 2 and 3 = 5

在以上示例中,参数是必需的。要添加可选参数,请在其名称前加上双破折号-。在以下情况下,surname参数是可选的,因为它以双破折号(--surname)为前缀import argparse

parser = argparse.ArgumentParser()

parser.add_argument("name")

parser.add_argument("--surname")

args = parser.parse_args()

print ("My name is ", args.name, end=' ')

if args.surname:

print (args.surname)

参数的一个字母名称加单破折号作为短名称选项。C:\python36>python argparser3.py Malhar

My name is Malhar

C:\python36>python argparser3.py Malhar --surname Lathkar

My name is Malhar Lathkar

parser.add_argument("-s","--surname")

如果希望仅从定义的列表中取值,则将其定义为choices参数。import argparse

parser = argparse.ArgumentParser()

parser.add_argument("sub", choices=['Physics', 'Maths', 'Biology'])

args=parser.parse_args()

print ("My subject is ", args.sub)

请注意,如果参数值不在列表中,则会显示无效选择错误。C:\python36>python argparser4.py Physics

My subject is Physics

C:\python36>python argparser4.py English

usage: argparser4.py [-h] {Physics,Maths,Biology}

argparser4.py: error: argument sub: invalid choice: 'English' (choose from 'Physics', 'Maths', 'Biology')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值