python argparse例子

本文介绍使用Python的argparse模块来解析命令行参数的方法。通过两个示例展示了如何定义和处理命令行输入,包括基本参数、选项参数及分组参数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. arg_1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
#coding=utf-8
import argparse
def parse_args():
    description = "usage: % prog[options]"
    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('addresses', nargs='*'help='help')
    parser.add_argument('filename'help='help')
    parser.add_argument('-p''--port'type=inthelp='help')
    parser.add_argument('--iface'help=help, default='localhost')
    parser.add_argument('--delay'type=floathelp=help, default=.7)
    parser.add_argument('--bytes'type=inthelp=help, default=10)
 
    args = parser.parse_args()
    return args
 
if __name__ == '__main__':
    args = parse_args()
 
    for address in args.addresses:
        print 'The address is : %s .' % address
        print 'The filename is : %s .' % args.filename
        print 'The port is : %d.' % args.port
        print 'The interface is : %s.' % args.iface
        print 'The number of seconds between sending bytes : %f' % args.delay
        print 'The number of bytes to send at a time : %d.' % args.bytes
 
#-p 22 --delay 1.2 127.0.0.1 172.16.55.67 poetry/ecstasy.txt


2.arg_2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python
# coding=utf-8
import argparse
from argparse import ArgumentParser, RawTextHelpFormatter
 
def get_args():
    """实例化类,formatter_class参数允许help信息以自定义的格式显示"""
    parser = ArgumentParser(description="This is a tool for execute command(s) on remote server(s) or get/put file(s) from/to the remote server(s)\nNotice: please always use '/' as path separater!!!",formatter_class=RawTextHelpFormatter,epilog="Notice:\n  If any options use more than once,the last one will overwrite the previous")
    remote_command = parser.add_argument_group('remote command''options for running remote command')
    remote_command.add_argument('--cmd', metavar='“COMMAND”', dest='cmd',help="command run on remote server,multiple commands sperate by ';'")
    sftp = parser.add_argument_group('sftp''options for running sftp')
    sftp.add_argument('--put', metavar='', help="transfer from local to remote", nargs=2)
    sftp.add_argument('--get', metavar='', help="transfer from remote to local", nargs=2)
    global args
    args = vars(parser.parse_args())
    print args
    = 0
    for in ('cmd''put''get'):
        if in args:
            if args[i] is None:
                del args[i]
            else:
                += 1
    if n > 1:
        print('\n  Only one of the "--cmd --put --get" can be used!')
        exit(10)
 
if __name__ == '__main__':
    get_args()
    if 'cmd' in args:
        echo_cmd = args['cmd']
        print echo_cmd
         
 # --cmd uptime --get /home/nginx /home/nginx



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/2055878,如需转载请自行联系原作者

### 使用 `argparse` 模块解析命令行参数 #### 创建 ArgumentParser 对象 要使用 `argparse` 解析命令行参数,首先需要创建一个 `ArgumentParser` 实例。这个对象会保存所有的命令行选项和参数的信息。 ```python import argparse parser = argparse.ArgumentParser(description='Process some integers.') ``` 此代码片段初始化了一个新的 `ArgumentParser` 对象,并设置了描述信息[^1]。 #### 添加参数 接着向该对象添加期望接收的命令行参数: ```python parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') ``` 上述例子展示了两种类型的参数:位置参数(如 `'integers'`)以及可选参数(如 `--sum`)。对于每一个参数都可以指定其元数据名称 (`metavar`)、类型 (`type`) 和数量 (`nargs`) 等属性[^2]。 #### 解析参数 最后一步是从命令行读取这些参数并将其转换成 Python 数据结构: ```python args = parser.parse_args() print(args.accumulate(args.integers)) ``` 这段代码调用了 `parse_args()` 方法来收集传递给脚本的所有命令行输入,并按照之前定义的方式解释它们。之后可以根据解析后的结果执行相应的逻辑操作[^3]。 #### 完整示例:计算圆柱体体积 这里给出一个具体的案例说明如何利用 `argparse` 来简化程序中的参数管理。假设有一个函数用来计算圆柱体体积,在不使用 `argparse` 的情况下可能如下所示: ```python if __name__ == '__main__': print(cylinder_volume(1, 3)) ``` 但是当引入了 `argparse` 后,则可以通过命令行动态传入半径和高度作为参数来进行更灵活的操作: ```python def cylinder_volume(radius, height): import math return math.pi * radius ** 2 * height if __name__ == "__main__": parser = argparse.ArgumentParser(description="Calculate volume of a Cylinder.") parser.add_argument('-r', '--radius', type=float, required=True, help="Radius of Cylinder") parser.add_argument('-H', '--height', type=float, required=True, help="Height of Cylinder") args = parser.parse_args() print(f"The Volume is {cylinder_volume(args.radius, args.height)}") ``` 在这个版本里,用户可以直接通过 `-r/--radius` 和 `-H/--height` 参数设置圆柱体的具体尺寸,而无需硬编码数值到源码中[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值