python获取命令行传参的两种种常用方法argparse解析getopt 模块解析
方法一: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]是脚本名称,从第一位获取到最后
posted on 2020-05-20 11:01 zhangmingda 阅读(2574) 评论(0) 编辑 收藏 举报