51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2211|回复: 1
打印 上一主题 下一主题

Python命令行参数

[复制链接]
  • TA的每日心情
    无聊
    6 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-19 11:20:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2018-12-19 11:25 编辑

    Python 获得命令行参数的方法

    需要模块:sys
    参数个数:len(sys.argv)
    脚本名:    sys.argv[0]
    参数1:     sys.argv[1]
    参数2:     sys.argv[2]


    解析命令行参数

    Python提供了一个getopt模块,可用于解析命令行选项和参数。

    该模块提供了两个功能和异常,以启用命令行参数解析。

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

    1. -getopt.getopt(args, options, [long_options])
    复制代码

    Pythongetopt.GetoptError异常

    当在参数列表中有一个无法识别的选项,或者当需要一个参数的选项不为任何参数时,会引发这个异常。
    异常的参数是一个字符串,指示错误的原因。 属性msg和opt给出错误消息和相关选项。

    1. import sys, getopt

    2. def main(argv):
    3.     inputfile = ''
    4.     outputfile = ''

    5.     try:
    6.         opts, args = getopt.getopt(argv, "hi:o:g:", ['help', 'ifile=', "ofile="])
    7.         # 长选项'='相当于短选项的':'
    8.         print(opts)  # 打印参数与值 [('-i', 'in'), ('-o', 'out')]

    9.     except getopt.GetoptError as e:
    10.         print(e)
    11.         sys.exit(-2)

    12.     for opt, arg in opts:
    13.         if opt in ('-h', '--help'):
    14.             print('usage: command_line_usage.py -i <inputfile> -o <outputfile>')
    15.             sys.exit()
    16.         elif opt in ("-i", "--ifile"):
    17.             inputfile = arg
    18.         elif opt in ("-o", "--ofile"):
    19.             outputfile = arg

    20.     print('Input file is "', inputfile)
    21.     print('Output file is "', outputfile)

    22. if __name__ == "__main__":
    23.     main(sys.argv[1:])  # 要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
    复制代码

    代码解释:
    a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
    b) "hi: o :": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi : o:"就表示"h"是一个开关选项;"i :"和" o : "则表示后面应该带一个参数。
    c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

    getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

    长选项格式举例:

    • --version
    • --file=error.txt

    让一个脚本同时支持短选项和长选项
    getopt.getopt(sys.argv[1:], "hi: o:", ["version", "file="])

    1. D:\TestFPython>python 1_1_getopt.py -i in -o out
    2. [('-i', 'in'), ('-o', 'out')]
    3. Input file is " in
    4. Output file is " out
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 16:46 , Processed in 0.063831 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表