Python 命令行参数

Python的命令行参数

argparse、optparse、getopt ——解析Python传入的参数

​ 三者都是pyrhon的内建模块,用来处理命令行参数。getopt只能简单处理 命令行参数;optparse功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明(但目前已被弃用);argparse 模块是基于 optparse 的,使用方法相似,从 sys.argv 中解析参数,可编写用户友好的命令行界面,自动生成帮助和使用信息,对于无效参数可产生相应的错误提示。

  • argparse

  • getopt 能解析带’-‘和’–'格式的参数

    getopt.getopt(args,shortopts,longopts = [])
    
    # args是要解析的参数列表(不包括程序启动路径),通常是sys.argv[1:]。
    # shortopts是脚本要识别的选项字母字符串,其中的选项需要一个参数,后接一个冒号。
    # longopts(如果已指定)必须是包含应支持的长选项名称的字符串列表。
    # '--'选项名称中不应包含前导字符。需要参数的长选项应后跟等号('=')。
    # 不支持可选参数。要仅接受长选项,shortopts应该为空字符串。
    
    import sys
    import getopt
    if __name__ == "__main__":
        try:
            # -h-i:-p:-t:-v 表示h,v两个不需要识别
            opts, args = getopt.getopt(sys.argv[1:],"-h-i:-p:-t:-v", ["help", "ip=", "port=", "types=", "version"])
        except getopt.GetoptError:
            print('test.py -h to help')
            exit(1)
    
        print(opts)
        # print(args)
        if not opts:
            print('test.py -h to help')
            exit(1)
    
        ip = None
        port = None
        types = None
        for opt, arg in opts:
            # 如果从命令行中接收的是h
            if opt in ('-h', '--help'):
                print('test.py -i <ip> -p <port> -t <m1|m2>')
                sys.exit(0)
            if opt in ("-i", "--ip"):
                ip = arg
            if opt in ("-p", "--port"):
                port = arg
            if opt in ("-t", "--types"):
                types = arg
            if opt in ("-v"):
                print("version 0.0.0.0")
                exit(1)
    
        print("master ip {}, port {}, type {}.".format(ip, port, types))
    执行:
    python test.py --ip=111 -p a
    输出:
    [('--ip', '111'), ('-p', 'a')]
    master ip 111, port a, type None.
    
    

sys.argv[] ——python中参数传递方式

在Python中命令行参数通过sys.argv传递,它的类型是一个list类型,其中的元素为字符串

"""
在python中参数是sys.argv[1:],argv[0]是执行程序的名字

sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。
因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,
所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数

在用命令行执行代码时,a这个list中的第一值就是文件名本身,也就时示例中的test_delete.py
"""
# test_delete.py
import sys
a=sys.argv[0]
print(a) 
# 打印结果:test_delete.py,如果python 运行时输入的绝对路径的话,也包括绝对路径


sys.argv[1:] 
# 如果在IDE中执行python test_delete.py 1 2 3 4 5 6
# 打印结果:['1','2','3','4','5'] 是一个列表

# 在pycharm中运行时,在rn->Edit Configuartions->Paramaters栏中添加参数,以空格分隔
# 在CMD或者linux上就直接在后面添加就行,空格分隔参数

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值