Python获取命令行参数

目录

1. 使用sys模块

2. 使用argparse模块


在写python程序的时候,经常需要获取命令行的参数,以达到灵活配置和批量执行(结合配置文件和sh脚本)的目的。下面介绍两种方法,一种适合简单的参数输入,一种适合更多更专业的参数输入。

1. 使用sys模块

参考下面的代码

import sys

if __name__ == "__main__":
    # 检查参数个数
    if len(sys.argv) < 2:
        print("无输入参数")
        sys.exit(1)
    
    message = sys.argv[1]
    print(message)

运行以下命令

python args.py "This is test for args"

注意这里"This is test for args" 是输入的第一个参数,被上面程序中message变量接收,所以得到的输出为

This is test for args

2. 使用argparse模块

第1种方法虽然比较简单,但是缺点也很明显。首先参数多了就会很麻烦,读入的时候会严格按照参数的顺序,并且没有任何的提示。如果有复杂的参数输入需求,argparse模块会很有帮助。

通过定义parse_args()函数,调用add_argument,来增加参数的个数和对应的一些选项,可以设置输入参数的类型,为str或者int或者其他类型,并且设置默认值。help字段可以设置帮助信息。注意,程序里增加的第一个参数,设置了required=True,所以该参数没有默认值,必须设置该参数。

import argparse

def parse_args():
    parser = argparse.ArgumentParser()
    
    parser.add_argument(
        "--config", type=str, required=True, help="input config path",
    )
    parser.add_argument(
        "--bool_param", type=bool, default=False, help="bool_param"
    )
    parser.add_argument(
        "--int_param", type=int, default=0
    )
    return parser.parse_args()



if __name__ == "__main__":
    
    args = parse_args()
    
    print(args.config)
    print(args.bool_param)
    print(args.int_param)

运行以下命令

python args.py

会得到error和提示,表示有几个参数需要输入,并且--config的参数是必须的。

usage: args.py [-h] --config CONFIG [--bool_param BOOL_PARAM] [--int_param INT_PARAM]
args.py: error: the following arguments are required: --config

可以输入

python args.py --help

得到帮助信息

usage: args.py [-h] --config CONFIG [--bool_param BOOL_PARAM] [--int_param INT_PARAM]

options:
  -h, --help            show this help message and exit
  --config CONFIG       input config path
  --bool_param BOOL_PARAM bool_param
  --int_param INT_PARAM

运行一下命令

python args.py --config /temp/test

可以得到下面的输出,除第一个外,其他两个都是默认参数

/temp/test
False
0

完整输入所有参数

python args.py --config /temp.test --bool_param True --int_param 5

能够得到

/temp.test
True
5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值