方法一: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]是脚本名称,从第一位获取到最后

  

最新文章

  1. 一次更愚蠢的NOIP模拟赛
  2. [译]angularjs directive design made easy
  3. 2016移动端web5分钟速成(适合新手)
  4. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
  5. mysql5.5手册读书日记(4)
  6. Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)
  7. js正则表达式进行格式校验
  8. Windows下oracle打补丁步骤
  9. Spark大师之路:广播变量(Broadcast)源代码分析
  10. openstack中的环境准备
  11. JUC中AQS简介
  12. Base 64 &amp; decodeURIComponent
  13. 项目管理目标:添加人员并向其分配任务 - Project
  14. vue 路由跳转,传参
  15. 几本不错的数据仓库和Hadoop书籍
  16. 机器学习系列-tensorflow-02-基本操作运算
  17. 使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis
  18. LICS O(n*m)+前驱路径
  19. 【JMeter】如何用JMeter进行压力测试
  20. Java LinkedHashMap 逆序遍历

热门文章

  1. 【豆科基因组】小豆(红豆)adzuki bean, Vigna angularis基因组2015
  2. 【数据处理】python将GO注释结果整理为WEGO文件
  3. Atom编辑器速查
  4. perl substr
  5. CentOS6.9安装python3
  6. 苹果ios通过描述文件获取udid
  7. 深入了解scanf() getchar()和gets()等函数之间的区别
  8. UE4之Slate: App启动与最外层Runtime结构
  9. A Child&#39;s History of England.15
  10. JAXB—Java类与XML文件之间转换