Python 详解命令行解析 - argparse

本文深入解析了Python中的argparse模块,对比sys.argv,argparse提供了更强大的命令行参数解析能力,包括处理位置参数、子命令、多种前缀等,生成更友好的使用消息,并简化了自定义类型和操作的接口。

sys.argv

适合解析简单的命令行

filename = arg_sys.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
需要模块:sys
参数个数:len(sys.argv)
文件名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[2]
......
'''
import sys
print "file = ", sys.argv[0]
for i in range(1, len(sys.argv)):
print "parameter%s = %s"%(i, sys.argv[i])

在dos输入Python arg_sys.py 1 2 3 4 5

why choice argparse ?

2.7之后python不再对optparse模块进行扩展,推荐使用argparse模块对命令行进行解析。

来自stackoverflow的说明

As of 2.7, optparse is deprecated, and will hopefully Go away in the future.

argparse is better for all the reasons listed on its original page (http://code.google.com/p/argparse/):

  • handling positional arguments
  • supporting sub-commands
  • allowing alternative option prefixes like + and /
  • handling zero-or-more and one-or-more style arguments
  • producing more informative usage messages
  • providing a much simpler interface for custom types and actions

More information is also in PEP 389, which is the vehicle by which argparse made it into the standard library.

创建解析器 - ArgumentParser

import argparse
parser = argparse.ArgumentParser()
class ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)

创建一个ArgumentParser实例,ArgumentParser的参数都为关键字参数。

prog :文件名,默认为sys.argv[0],用来在help信息中描述程序的名称。

usage :描述程序用途的字符串

description :help信息前显示的信息

epilog :help信息之后显示的信息

>>> import argparse
>>> parser = argparse.ArgumentParser(prog='my - program', usage='%(prog)s [optio
ns] usage',description = 'my - description',epilog = 'my - epilog')
>>> parser.print_help()
usage: my - program [options] usage

my - description

optional arguments:
-h, --help show this help message and exit

my - epilog

parents :由ArgumentParser对象组成的列表,它们的arguments选项会被包含到新ArgumentParser对象中。(类似于继承)

formatter_class :help信息输出的格式,为了美观…

prefix_chars :参数前缀,默认为’-‘(最好不要修改)

fromfile_prefix_chars :前缀字符,放在文件名之前

conflict_handler :解决冲突的策略,默认情况下冲突会发生错误,(最好不要修改)

add_help :是否增加-h/-help选项 (默认为True),一般help信息都是必须的。设为False时,help信息里面不再显示-h –help信息

argument_default: - (default: None)设置一个全局的选项的缺省值,一般每个选项单独设置,基本没用

添加参数选项 - add_argument

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name or flags :参数有两种,可选参数和位置参数

action: 默认为store

nargs: 参数的数量

const :保存一个常量

default :默认值

type :参数类型,默认为str

choices :设置参数值的范围,如果choices中的类型不是字符串,记得指定type

required :该选项是否必选,默认为True

metaver:帮助信息中显示的参数名称

dest :参数名

>>> import argparse
>>> parser=argparse.ArgumentParser()
>>> parser.add_argument('--version', action='version', version='version 2.0')
_VersionAction(option_strings=['--version'], dest='version', nargs=0, const=None
, default='==SUPPRESS==', type=None, choices=None, help="show program's version
number and exit", metavar=None)
>>> parser.parse_args(['--version'])
version 2.0

例子:

import argparse

def parse_arguments(version_info, args=None):
parser = argparse.ArgumentParser()

parser.add_argument('-v', '--version', action='version',
version=version_info,
help='Show program version info and exit.')

parser.parse_args(args)
if __name__ == "__main__":

parse_arguments("${version_info}")

参考网址:

原文地址(http://blog.youkuaiyun.com/lis_12/article/details/54618868).

转载于:https://www.cnblogs.com/skyer/p/6344111.html

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值