• Python


    前言

    每个脚本或者命令行程序都可以输入一些参数,通常有两种规范。

    1. 短格式,"-"号后面要紧跟一个选项字母,如果还有此选项的附加参数,可以用空格分开,也可以不分开,长度任意,可以用引号。
    python main.py -o
    python main.py -oa
    python main.py -oabcd
    python main.py -o abcde
    python main.py -o "abcdef"
    1. 长格式,"--"号后面要跟一个单词,如果还有些选项的附加参数,后面要紧跟"=",再加上参数,"="号前后不能有空格。
    python main.py --conf=conf.json

    使用 sys.argv 获取参数

    • 在 Python 可以使用 sys.argv 获取到命令行参数。
    • 第一个参数 sys.argv[0] 表示代码本身文件路径。
    • 所有参数从1开始,返回的结果是一个 list。
    #-*- coding: uft-8 -*-
    import os,sys
    
    if __name__ == "__main__":
        arg1 = sys.argv[1]
        arg2 = sys.argv[2]
        print(sys.argv)
    
    # ['.\\main.py', 'a', 'b', 'd', 'e']

    使用 getopt 获取参数

    在使用 getopt的时候有如下内容需要注意。

    1. 使用切片过滤掉 sys.argv[0] 为脚本名的参数,sys.argv[1:]为要处理的参数列表。
    2. 通常会有限验证参数是否合法,这里使用try进行判断。
    3. 这里 getopt.getopt() 函数需要两个参数,一个是命令行参数列表,一个是匹配选项。
    4. 其中匹配选项 "hi: o:" 表示程序可以匹配三个参数(注意:这串字符中间多了一个空格,因为Markdown语法会替换成Emoji表情,需去掉):
      • h选项表示开关不带参数如: test.py -h
      • i:选项表示-i参数后面必须存在参数值如: test.py -i abc.txt
      • o:选项表示-o参数后面必须存在参数值如: test.py -o def.txt
    5. 这里 getopt.getopt() 函数返回两个列表,opts和args,其中opts是一个 tuple 列表,内容是(参数名,参数值),如果没有参数则为空字符串'',例如-h。args的值是格式以外的命令行参数。

    Example:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    import getopt
    
    if __name__ == "__main__":
        try:
            opts, args = getopt.getopt(sys.argv[1:], "hi:o:", ["help", "input="])
        except getopt.GetoptError as e:
            print(e)
            print("Something wrong...")
            sys.exit(2)
        print(opts)
        print(args)
    # 测试输出结果如下
    python .	est.py -i abc.txt -o target.txt --help --input=input.txt otherInfo1 otherInof2
    [('-i', 'abc.txt'), ('-o', 'target.txt'), ('--help', ''), ('--input', 'input.txt')]
    ['otherInfo1', 'otherInof2']

    其他

    2020-12-03 10:20:18 星期四 创建

  • 相关阅读:
    130被围绕的区域
    695岛屿的最大面积
    200岛屿数量
    5314跳跃游戏IV
    375猜数字大小II
    464我能赢吗
    486预测赢家
    877石子游戏
    1000合并石头的最低成本
    5329数组大小减半
  • 原文地址:https://www.cnblogs.com/duchaoqun/p/14078275.html
Copyright © 2020-2023  润新知