如何在 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!

更新于: 2023年4月21日

400 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.