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

pythonserver side programmingprogramming更新于 2026/2/16 17:16:17

简介..

Python 有一个非常强大的 argparse 模块,它提供解析命令行参数的函数。如果我们想从操作系统命令行获取用户输入而无需大量交互或编写一个接受来自命令行参数的程序,例如提供一个 URL 来解析或接受要上传到 S3 存储桶的文件,然后可以轻松使用 argparse。

基本用法

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

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

  • 使用参数。

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

def main(parameters):
<< 逻辑在这里 >>

if __name__ == '__main__':
<< 1. 定义参数解析器 >>
<< 2. 解析参数 >>
<< 3. 验证 >>
<< 4. 调用 main (参数) >>

main 函数知道我们代码的入口点是什么。只有直接调用代码时,才会执行 __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 parameters',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# 添加我们的第一个字符串类型参数 player name
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)

# 添加第一个参数 player name,类型为字符串
parser.add_argument('player',
metavar='player',
type=str,
help='Tennis Player')

# 添加第二个参数 player title,类型为整数/数字。
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.

相关文章


有用资源