如何在Python中添加命令行参数?
介绍..
Python有一个非常强大的argparse模块,它提供了解析命令行参数的函数。如果我们想从操作系统命令行获取用户输入,而不需要大量的交互或编写一个接受命令行参数的程序,例如提供要解析的URL或接受要上传到S3桶的文件,则可以使用argparse并尽量少的努力。
基本用法
- 定义您的代码将接受的参数。
-
调用参数解析器以返回结果对象。
-
使用这些参数。
简而言之,参数解析器的结构如下所示。
def main(parameters):
<<在此处添加逻辑>>
if __name__ == '__main__':
<< 1.定义参数解析器>>>
<< 2.解析参数>>
<< 3.验证>>
<< 4.调用主要的(parameters)>>
主要函数知道我们代码的入口点是什么。当直接调用代码时,name ‘main‘部分才会执行。
- 创建一个仅接受一个参数 – 网球选手的字符串 – 的程序。
import argparse
def get_args():
""" Function : get_args
在 .add_argument 中使用的参数
1. metavar - 向用户提供有关数据类型的提示。
- 默认情况下,所有参数都是字符串。
2. type - 实际的Python数据类型
-(请注意没有引号围绕str)
3. help - 关于使用的参数的简短描述
"""
parser = argparse.ArgumentParser(
description='Example for Two positional arguments',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# 添加我们的第一个参数player,类型为字符串
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')
return parser.parse_args()
# 定义主函数
def main(player):
print(f" *** {player}已获得20个大满贯冠军。")
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
在 .add_argument 中使用的参数
1. metavar - 向用户提供有关数据类型的提示。
- 默认情况下,所有参数都是字符串。
2. type - 实际的Python数据类型
-(请注意没有引号围绕str)
3. help - 关于使用的参数的简短描述
"""
parser = argparse.ArgumentParser(
description='两个位置参数的示例',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
#添加第一个参数player,类型为字符串
parser.add_argument('player',
metavar='player',
type=str,
help='网球选手')
#添加我们的第二个参数player_titles,类型为整数/数字
parser.add_argument('titles',
metavar='titles',
type=int,
help='网球选手大满贯冠军数')
return parser.parse_args()
#定义主函数
def main(player, titles):
print(f" *** {player}已赢得{titles}个大满贯冠军。")
if __name__ == '__main__':
args = get_args()
main(args.player, args.titles)
现在打开您的终端并执行该程序。如果没有传递参数,脚本会显示清晰的错误消息。
输出
<<< python test.py
使用: test.py [-h] player titles
test.py: 错误:缺少以下参数: player, titles
<<< python test.py federer 20
*** 弗德勒获得了20个大满贯冠军。