zoukankan      html  css  js  c++  java
  • python获取命令行传参的两种种常用方法

    方法一:argparse解析

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    #  @Time: 2020/5/20 10:38
    #  @Author:zhangmingda
    #  @File: argparse_test.py
    #  @Software: PyCharm
    #  Description:
    import argparse
    
    parser = argparse.ArgumentParser("指定监听端口")
    parser.add_argument('-p', '--port', default=80)
    args = parser.parse_args()
    print("获取命令行传参")
    port = args.port
    print("port=",port)

      

    方法二: getopt 模块解析,可以自定义错误提示

    格式为:getopt.getopt(argv, options[, long_options])

    argv为命令传入的参数列表,也就是sys.argv[1:]

    该方法有两种传参形式:短 ('-') 和长 ('--')

    options表示的是短选项,传入时需用(例如 :-f )形式传入参数,其中,有冒号(:) 表示 -f 之后必须传入值构成(例如:-f value),没有冒号则不用。

    [, long_options]表示的是长选项,传入时需用(例如 :--f )形式传入参数,其中,有等于号(=) 表示 --f 之后必须传入值构成(例如:--f=value),没有等于号则不用。

    使用时可以长短混合,比如多个参数,有的用长选项,有的用短选项;在程序中设置默认值之后,还可以不用传全部参数

      示例:

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    #  @Time: 2020/5/19 18:12
    #  @Author:zhangmingda
    #  @File: getopt_test.py
    #  @Software: PyCharm
    #  Description:
    
    import getopt
    import sys
    
    def get_args_func(argv):
        port = '80'  # 默认值
        try:
            opts, args = getopt.getopt(argv, "hp::", ["help", "port="])
        # 表示参数选项有:-h/ --help -p/ --port,
        # 它们相互对应;该方法的返回值有两个元素: 第一个是(opt, value)元组的列表,第二个是一般参数列表,包含那些没有 '-' 或 '--' 的参数
        except getopt.GetoptError:
            # 获取到非指定的- 或者长选项--的参数给出正确提示
            print('GetoptError: python %s -p <port> ' % sys.argv[0])
            print('  GetoptError: python %s --port=<port>' % sys.argv[0] )
            sys.exit(2)
        for opt, value in opts:  # 依次获取列表中的元组项
            if opt in ("-h", "--help"):
                print(' USAGE: %s -p <port> ')
                print('or: %s --port=<port>')
                sys.exit(0)
            elif opt in ('-p','--port'):
                port = value
        print('-----------------------------------------------------------------------')
        print("get option -p or --port:",port)
        print("get other option ",args)
    
    if __name__ == '__main__':
        get_args_func(sys.argv[1:])  # 因为sys.argv[0]是脚本名称,从第一位获取到最后

      

  • 相关阅读:
    程序员的进阶课-架构师之路(2)-数组
    程序员的进阶课-架构师之路(1)-数据结构与算法简介
    ASP.NET开发实战——(三)第一个ASP.NET应用《MyBlog》
    ASP.NET开发实战——(二)为什么使用ASP.NET
    ASP.NET开发实战——(一)开篇-用VS创建一个ASP.NET Web程序
    asp.net core 系列 12 选项 TOptions
    Linux编程 1 (文件系统路径说明, 目录结构说明)
    asp.net core 系列 9 三种运行环境和IIS发布
    asp.net core 系列 6 MVC框架路由(下)
    asp.net core 系列 4 注入服务的生存期
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/12922370.html
Copyright © 2011-2022 走看看