如何在 Python 中访问命令行参数?
命令行是向操作系统发出可执行命令的地方。可以通过在命令行中将 Python 脚本的名称放在 python 可执行文件前面来执行 Python 脚本。
C:\users\acer>python test.py
如果您希望将一些数据元素传递给 Python 脚本进行处理,则这些元素将作为以空格分隔的值写入脚本名称的后面。这个空格分隔的值列表称为命令行参数。
例如,
C:\users\acer>python test.py Hello TutorialsPoint
当存在通过命令行传递参数的方法时,也必须存在接受这些传递的参数的方法。有多种方法可以访问它们
使用列表对象 argv[]
使用 argparse 模块
使用 getopt 模块
使用 argv[] 列表对象
Python 包含一个称为 argv[] 的特殊列表对象,用于存储传递的这些命令行参数。它们以空格字符区分。argv[] 定义在 Python 发行版的 sys 模块中。
示例
例如,假设我们尝试在通过命令行执行 python 文件“test.py”时将两个字符串作为参数传递。
C:\users\acer>python test.py Hello TutorialsPoint
然后,此程序的列表对象将包含以下内容 -
sys.argv[]=[‘test.py’, ‘Hello’, ‘TutorialsPoint’]
test.py
在 python 程序中,访问这些参数如下所示 -
import sys
print ("first command line argument: ",sys.argv[1])
print ("second command line argument: ",sys.argv[2])
输出
将生成以下输出 -
first command line argument: Hello second command line argument: Tutorialspoint
使用 argparse 模块
argparse 模块是一个内置模块,它减少了样板代码并使您的代码更健壮。它比使用特殊的列表对象 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)
在命令行中,使用以下命令执行上述程序,
输出
python test.py 2000133
将生成以下输出 -
The Student Exists with ID: 2000133
使用 getopt 模块
Python 提供的 getopt 模块用于解析程序中的命令行参数。API 的设计类似于 C 编程语言中的 getopt() 函数,因此它支持与该函数相同的约定。
此模块提供了一个具有相同名称的方法,getopt()。它用于访问命令行参数。以下是此方法的语法 -
getopt.getopt(args, shortopts, longopts=[])
如我们所见,getopt() 方法接受三个参数:args、shortopts 和 longopts
其中,
args 是命令行参数列表
args 是命令行参数列表
Longopts 是一个包含长选项名称的字符串列表。需要参数的选项后面应跟一个等号 (=)。
此方法等效于 sys.args[1:],即它不访问程序的引用。
示例
以下示例演示了如何使用 getopt.getopt() 方法解析命令行参数。
import sys
import getopt
def welcome():
first_arg = None
next_arg = None
argv = sys.argv [1:]
try:
opts , args = getopt.getopt (argv, "f:n:")
except:
print ("Error")
for opt , arg in opts:
if opt in ['-f']:
first_arg = arg
elif opt in ['-n']:
next_arg = arg
print (first_arg + " " + next_arg)
welcome()
输出
使用以下命令通过命令行传递两个参数来执行上述程序 -
python test.py -f Hello -n Tutorialspoint!
获得的输出为 -
Hello Tutorialspoint!
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP