如何在Python中添加命令行参数?

介绍..

Python有一个非常强大的argparse模块,该模块提供了用于解析命令行参数的功能。如果我们想从OS命令行中获得用户输入而无需进行大量交互操作,或者编写一个程序来接受命令行中的参数,例如提供URL进行解析或接受文件以上传到S3存储桶,则可以使用argparse用最少的精力。

基本用法

  • 定义您的代码将接受的参数。

  • 调用参数解析器以返回结果对象。

  • 使用参数。

简而言之,参数解析器的结构如下所示。

def main( parameters):

<< Logic here >>

if __name__ == '__main__':

<< 1. Define argument parser >>

<< 2. Parse the arguements >>

<< 3. Validation >>

<< 4. call main (parameters) >>

主要功能知道我们代码的入口点是什么。仅在直接调用代码时才执行__name__ =='__main__'部分。

  • 创建一个仅接受一个参数的程序-网球运动员作为字符串。

import argparse

def get_args():

""" Function : get_args

parameters used in .add_argument

1. metavar - Provide a hint to the user about the data type.

- By default, all arguments are strings.

2. type - The actual Python data type

- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(

description='Example for Two positional arguments',

formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string

parser.add_argument('player',

metavar='player',

type=str,

help='Tennis Player')

return parser.parse_args()

# define main

def main(player):

print(f" *** The {player} had won 20 grandslam titles.")

if __name__ == '__main__':

args = get_args()

main(args.player)

a)现在,当您从命令行执行该程序而未传递任何参数时,即如果未提供任何参数,它将打印有关使用该程序的正确方法的简短用法说明。

In [3]: run <>.ipynb

usage: ipython [-h] player

ipython: error: the following arguments are required: player

An exception has occurred, use %tb to see the full traceback.

b)如果我们提供了多个参数,它会再次发出抱怨。程序抱怨得到了另一个未定义的参数。

c)只有当我们给程序一个确切的参数时,它才会运行

2.创建一个仅接受两个参数的程序-网球运动员作为字符串,大满贯冠军由运动员获得,作为整数。

示例

import argparse

def get_args():

""" Function : get_args

parameters used in .add_argument

1. metavar - Provide a hint to the user about the data type.

- By default, all arguments are strings.

2. type - The actual Python data type

- (note the lack of quotes around str)

3. help - A brief description of the parameter for the usage

"""

parser = argparse.ArgumentParser(

description='Example for Two positional arguments',

formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# Adding our first argument player name of type string

parser.add_argument('player',

metavar='player',

type=str,

help='Tennis Player')

# Adding our second argument player titles of type integer/number.

parser.add_argument('titles',

metavar='titles',

type=int,

help='Tennis Player Grandslam Titles')

return parser.parse_args()

# define main

def main(player, titles):

print(f" *** The {player} had won {titles} grandslam titles.")

if __name__ == '__main__':

args = get_args()

main(args.player, args.titles)

现在打开终端并执行程序。如果未传递参数,则脚本将返回错误并显示清除消息。

输出结果

<<< python test.py

usage: test.py [-h] player titles

test.py: error: the following arguments are required: player, titles

<<< python test.py federer 20

*** The federer had won 20 grandslam titles.

以上是 如何在Python中添加命令行参数? 的全部内容, 来源链接: utcz.com/z/326458.html

回到顶部