当前位置: 首页 > 文档资料 > Python 中文教程 >

命令行参数(Command Line Arguments)

优质
小牛编辑
135浏览
2023-12-01

Python提供了一个getopt模块,可以帮助您解析命令行选项和参数。

$ python test.py arg1 arg2 arg3

Python sys模块通过sys.argv提供对任何命令行参数的访问。 这有两个目的 -

  • sys.argv是命令行参数列表。

  • len(sys.argv)是命令行参数的数量。

这里sys.argv [0]是程序ie。 脚本名称。

例子 (Example)

考虑以下脚本test.py -

#!/usr/bin/python
import sys
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

现在运行上面的脚本如下 -

$ python test.py arg1 arg2 arg3

这产生以下结果 -

Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']

NOTE - 如上所述,第一个参数始终是脚本名称,它也被计入参数数量。

Parsing Command-Line Arguments

Python提供了一个getopt模块,可以帮助您解析命令行选项和参数。 该模块提供了两个函数和一个例外,用于启用命令行参数解析。

getopt.getopt method

此方法解析命令行选项和参数列表。 以下是此方法的简单语法 -

getopt.getopt(args, options, [long_options])

以下是参数的详细信息 -

  • args - 这是要解析的参数列表。

  • options - 这是脚本要识别的选项字母字符串,需要参数的选项后面应跟冒号(:)。

  • long_options - 这是可选参数,如果指定,则必须是具有long选项名称的字符串列表,应该支持这些字符串。 需要参数的长选项后面应跟一个等号('=')。 要仅接受长选项,选项应为空字符串。

  • 此方法返回由两个元素组成的值:第一个是(option, value)对的列表。 第二个是剥离选项列表后剩下的程序参数列表。

  • 返回的每个选项和值对都有选项作为其第一个元素,前缀为短选项的连字符(例如,' - x')或长选项的两个连字符(例如,' - long-option')。

Exception getopt.GetoptError

当在参数列表中找到无法识别的选项或者没有给出需要参数的选项时,会引发此问题。

异常的参数是一个表示错误原因的字符串。 msgopt属性提供错误消息和相关选项。

例子 (Example)

考虑我们想通过命令行传递两个文件名,我们还想提供一个选项来检查脚本的用法。 脚本的用法如下 -

usage: test.py -i <inputfile> -o <outputfile>

以下是test.py的以下脚本 -

#!/usr/bin/python
import sys, getopt
def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print 'test.py -i <inputfile> -o <outputfile>'
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print 'test.py -i <inputfile> -o <outputfile>'
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print 'Input file is "', inputfile
   print 'Output file is "', outputfile
if __name__ == "__main__":
   main(sys.argv[1:])

现在,运行以上脚本如下 -

$ test.py -h
usage: test.py -i <inputfile> -o <outputfile>
$ test.py -i BMP -o
usage: test.py -i <inputfile> -o <outputfile>
$ test.py -i inputfile
Input file is " inputfile
Output file is "