Python 命令行参数
Python中的命令行参数指的是从shell程序传递给Python程序的输入值。它们很容易理解。
正如您可能已经知道的那样,Python程序也可以使用关键字”python”或”python3″通过命令行shell程序来执行。在执行过程中,shell程序还允许用户向相应的Python程序传递参数或输入。这些参数被称为命令行参数。
传递命令行参数
由于命令行参数是在shell/终端的执行过程中传递给程序的,所以需要提供一个特定的命令来执行此过程。在执行过程中,必须在程序名称后面提到要传递的参数,以便解释器读取它。如果有多个参数,则它们之间用空格分隔。
以下是在终端中传递命令行参数的基本语法:
python file_name.py arg1 arg2 arg3…
在这里,
- file_name.py是一个要执行的Python程序的占位符
-
arg1,arg2,arg3是要传递给Python程序的各种参数的占位符。
许多程序可以运行以提供关于如何运行它们的一些基本信息。Python可以通过“-h”来实现这一点−
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
您还可以以这样的方式编写脚本,使其能够接受各种选项。命令行参数是一个高级主题,应该在您学习完其他Python概念后再深入研究。
访问命令行参数
在一个简单的Python程序中,如果通过简单的函数调用传递参数,那么程序中也必须存在一个函数定义来访问这些参数。同样,当通过命令行将参数传递给Python程序时,程序也必须访问这些参数。
Python提供了几种访问它们的方法:
- 使用列表对象argv[]
-
使用argparse模块
-
使用getopt模块
使用argv[]列表对象
Python包含一个特殊的列表对象argv[],用于存储这些通过命令行传递的命令行参数。它们通过空格字符进行区分。argv[]在Python发行版的sys模块中定义。
例如,假设我们尝试将两个字符串作为参数传递给Python文件“test.py”,通过命令行执行它。
C:\users\acer>python test.py Hello TutorialsPoint
这个程序的List对象将包含以下内容−
sys.argv[]=[‘test.py’, ‘Hello’, ‘TutorialsPoint’]
使用argparse模块
argparse模块是一个内置模块,它可以减少样板代码并使你的代码更健壮。与使用特殊的List Object argv[]相比,argparse模块处理所有标准用例,包括子命令,并为你生成帮助和用法,检查和清理用户输入,而argv[]无法做到。
示例
例如,让我们尝试通过命令行执行以下Python程序“test.py”。
import argparse
parser = argparse.ArgumentParser("simple_example")
parser.add_argument('student_id', type=str, help='Show student_id')
args = parser.parse_args()
print("The Student Exists with ID:")
print(args.student_id)
输出
usage: simple_example [-h] student_id
simple_example: error: the following arguments are required: student_id
使用getopt模块
Python提供了getopt模块用于解析程序的命令行参数。该API的设计类似于C编程语言中的getopt()函数,因此支持与该函数相同的惯例。
该模块提供了一个同名方法 getopt() ,用于访问命令行参数。以下是该方法的语法
getopt.getopt(args, shortopts, longopts=[])
从我们可以看出,getopt()方法接受三个参数:args,shortopts和longopts。
其中,
- args是命令行参数的列表
-
shortopts是一个字符串,包含脚本想要识别的选项字母。需要参数的选项后面应跟着冒号(:)。
-
longopts是一个字符串列表,包含长选项的名称。需要参数的选项后面应跟着等号(=)。
此方法相当于sys.args[1:],即它不访问程序的引用。
要详细了解这些方法并使用示例,请点击这里。