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]是脚本名称,从第一位获取到最后
分类:
python3
posted on 2020-05-20 11:01 zhangmingda 阅读(2595) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-05-20 Python3 json &pickle 数据序列化