Python 如何访问命令行参数

Python 如何访问命令行参数

命令行是给操作系统提供可执行命令的地方。通过在命令行中在python可执行文件前面写入脚本名称,可以执行Python脚本。

C:\users\acer>python test.py

如果你想要将一些数据元素传递给Python脚本进行处理,这些元素被写作以脚本名称作为接续的空格分隔值。这个以空格分隔的值列表被称为命令行参数。

例如,

C:\users\acer>python test.py Hello TutorialsPoint

当存在通过命令行传递参数的方式时,也必须存在一种接受通过命令行传递的参数的方式。有多种方法可以访问它们。

  • 使用List对象argv[]

  • 使用argparse模块

  • 使用getopt模块

使用argv[] List对象

Python包含一个特殊的列表对象argv[],用于存储通过命令行传递的参数。它们由空格字符分隔。argv[]在Python分发的sys模块中定义。

示例

例如,假设我们正在尝试将两个字符串作为参数传递给Python文件’test.py’,并通过命令行执行它。

C:\users\acer>python test.py Hello TutorialsPoint

此程序的List对象将包含以下内容−

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 是命令行参数的列表

  • shortopts 是短选项的列表

  • 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!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程