python argvparser_Python命令行参数argv和argparse使用总结

概述

运行python脚本时通过命令行方式传入运行参数通常有以下两种自建方式:

sys.argv - 简洁

argparse - 丰富,可自定义

下面详细说一下具体时使用

argv

# test_argv.py

import sys

args = sys.argv

print(f'args = {args}')

>>> output

➜ git:(master) python3 test_argv.py

args = ['test_argv.py']

➜ git:(master) ✗ python3 test_argv.py 1 2 3

args = ['test_argv.py', '1', '2', '3']

➜ git:(master) ✗ python3 test_argv.py 1 2 3 'hello world !'

args = ['test_argv.py', '1', '2', '3', 'hello world !']

从上面可以看出,通过argv方法获取的结果:

返回为list

第一个参数为脚本本身

如参数中间带空格,用引号即可

argparse模块的功能较为丰富,其核心是通过add_argument方法自定义入参的:标志、格式、类型和范围等特性,常用如下:

*name_or_flag - 定义入参名或flag,如'-n', '--number'

type - 指定入参类型

choices - 指定入参范围

default - 指定入参默认值

required - 指定该餐素是否不要,布尔类型

help - 参数概述

实例

test_argv.py

import argparse

# 初始化一个parser对象

parser = argparse.ArgumentParser(description='test module of argparse')

# 指定-n/--number的参数

# 类型为int

# help为简短地说明

parser.add_argument(

'-n', '--number', type=int,

help='args of number'

)

# 指定-o/--output参数

# 并限制类型为:['txt', 'csv', 'doc']

parser.add_argument(

'-o', '--output', type=str,

choices=['txt', 'csv', 'doc'],

help='output method'

)

# 指定-d/--default参数

# 并限制类型为:['txt', 'csv', 'doc']

parser.add_argument(

'-d', '--default', type=int,

choices=[_ for _ in range(1, 10)],

default=5,

help='default'

)

# 指定位置参数foo

parser.add_argument('foo')

args = parser.parse_args()

print(f'args = {args}')

# 获取指定参数

print(

f'number = {args.number}, type = {type(args.number)}\n'

f'output = {args.output}, type = {type(args.output)}\n'

f'default = {args.default}, type = {type(args.default)}\n'

f'foo = {args.foo}, type = {type(args.foo)}'

)

output

# -h - 打印help

➜ git:(master) ✗ python3 test_argv.py -h

usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]

[-d {1,2,3,4,5,6,7,8,9}]

foo

test module of argparse

positional arguments:

foo

optional arguments:

-h, --help show this help message and exit

-n NUMBER, --number NUMBER

args of number

-o {txt,csv,doc}, --output {txt,csv,doc}

output method

-d {1,2,3,4,5,6,7,8,9}, --default {1,2,3,4,5,6,7,8,9}

default

# 不带参数运行,结果为None

➜ git:(master) ✗ python3 test_argv.py

args = Namespace(number=None, output=None)

number = None

output = None

# 带参数运行

➜ git:(master) ✗ python3 test_argv.py -n 33 --output txt

args = Namespace(number=33, output='txt')

number = 33, type =

output = txt, type =

# 参数格式错误

➜ git:(master) ✗ python3 test_argv.py -n str

usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]

test_argv.py: error: argument -n/--number: invalid int value: 'str'

➜ git:(master) ✗ python3 test_argv.py -o excel

usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]

test_argv.py: error: argument -o/--output: invalid choice: 'excel' (choose from 'txt', 'csv', 'doc')

# 默认参数

➜ git:(master) ✗ python3 test_argv.py

args = Namespace(default=5, number=None, output=None)

number = None, type =

output = None, type =

output = 5, type =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值