Python 3 – 命令行参数

Python 3 – 命令行参数

Python 提供了一个 getopt 模块来帮助你解析命令行选项和参数。

$ python test.py arg1 arg2 arg3
Python

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

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

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

这里的 sys.argv[0] 是程序即脚本名。

例子

考虑以下脚本 test.py –

#!/usr/bin/python3

import sys

print ('Number of arguments:', len(sys.argv), 'arguments.')
print ('Argument List:', str(sys.argv))
Python

现在按以下方式运行上述脚本 –

$ python test.py arg1 arg2 arg3
Python

这将产生以下结果 –

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

注意 - 如上所述,第一个参数始终是脚本名,并且也计算在参数的数量中。

解析命令行参数

Python 提供了一个 getopt 模块来帮助你解析命令行选项和参数。该模块提供两个函数和一个异常来启用命令行参数解析。

getopt.getopt 方法

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

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

这里是参数的详细信息 –

  • args − 要解析的参数列表。

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

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

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

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

异常 getopt.GetoptError

当在参数列表中找到一个无法识别的选项或当给定需要参数的选项时未给出任何选项时,会引发此异常。

异常的参数是一个指示错误原因的字符串。属性 msg 和 opt 给出错误消息和相关选项。

例子

假设我们想通过命令行传递两个文件名,并且我们还想提供一个选项来检查脚本的使用情况。脚本的用法如下 –

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

下面是用于测试.py的以下脚本 –

#!/usr/bin/python3

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 <输入文件> -o <输出文件>')
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print ('test.py -i <输入文件> -o <输出文件>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('输入文件为 "', inputfile)
   print ('输出文件为 "', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])
Python

输出

现在,按以下方式运行上述脚本 −

$ test.py -h
用法:test.py -i <输入文件> -o <输出文件>

$ test.py -i BMP -o
用法:test.py -i <输入文件> -o <输出文件>

$ test.py -i inputfile -o outputfile
输入文件为 " inputfile
输出文件为 " outputfile
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册