zoukankan      html  css  js  c++  java
  • Python3 命令行参数

    Python 提供了 getopt 模块来获取命令行参数。

    $ python test.py arg1 arg2 arg3

    Python 中也可以所用 sys 的 sys.argv 来获取命令行参数:

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

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

    注:sys.argv[0] 表示脚本名。

    实例

    test.py 文件代码如下:

    #!/usr/bin/python3
    
    import sys
    
    print ('参数个数为:', len(sys.argv), '个参数。')
    print ('参数列表:', str(sys.argv))

    执行以上代码,输出结果为:

    $ python3 test.py arg1 arg2 arg3
    参数个数为: 4 个参数。
    参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
    

    getopt模块

    getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--)。

    该模块提供了两个方法及一个异常处理来解析命令行参数。

    getopt.getopt 方法

    getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

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

    方法参数说明:

    • args: 要解析的命令行参数列表。

    • options: 以字符串的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。

    • long_options: 以列表的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。

    • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有'-'或'--'的参数。

    另外一个方法是 getopt.gnu_getopt,这里不多做介绍。

    Exception getopt.GetoptError

    在没有找到参数列表,或选项的需要的参数为空时会触发该异常。

    异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。

    实例

    假定我们创建这样一个脚本,可以通过命令行向脚本文件传递两个文件名,同时我们通过另外一个选项查看脚本的使用。脚本使用方法如下:

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

    test.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 <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 ('输入的文件为:', inputfile)
       print ('输出的文件为:', outputfile)
    
    if __name__ == "__main__":
       main(sys.argv[1:])
    

    执行以上代码,输出结果为:

    $ python3 test.py -h
    usage: test.py -i <inputfile> -o <outputfile>
    
    $ python3 test.py -i inputfile -o outputfile
    输入的文件为: inputfile
    输出的文件为: outputfile

     

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/wushuaishuai/p/8310747.html
Copyright © 2011-2022 走看看