概述
運(yùn)行python腳本時(shí)通過(guò)命令行方式傳入運(yùn)行參數(shù)通常有以下兩種自建方式:
- sys.argv - 簡(jiǎn)潔
- argparse - 豐富,可自定義
下面詳細(xì)說(shuō)一下具體時(shí)使用
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 !']
從上面可以看出,通過(guò)argv方法獲取的結(jié)果:
- 返回為list
- 第一個(gè)參數(shù)為腳本本身
- 如參數(shù)中間帶空格,用引號(hào)即可
argparse
argparse模塊的功能較為豐富,其核心是通過(guò)add_argument方法自定義入?yún)⒌模簶?biāo)志、格式、類型和范圍等特性,常用如下:
- *name_or_flag - 定義入?yún)⒚騠lag,如'-n', '--number'
- type - 指定入?yún)㈩愋?/li>
- choices - 指定入?yún)⒎秶?/li>
- default - 指定入?yún)⒛J(rèn)值
- required - 指定該餐素是否不要,布爾類型
- help - 參數(shù)概述
更多請(qǐng)參考: argparse
實(shí)例
test_argv.py
import argparse
# 初始化一個(gè)parser對(duì)象
parser = argparse.ArgumentParser(description='test module of argparse')
# 指定-n/--number的參數(shù)
# 類型為int
# help為簡(jiǎn)短地說(shuō)明
parser.add_argument(
'-n', '--number', type=int,
help='args of number'
)
# 指定-o/--output參數(shù)
# 并限制類型為:['txt', 'csv', 'doc']
parser.add_argument(
'-o', '--output', type=str,
choices=['txt', 'csv', 'doc'],
help='output method'
)
# 指定-d/--default參數(shù)
# 并限制類型為:['txt', 'csv', 'doc']
parser.add_argument(
'-d', '--default', type=int,
choices=[_ for _ in range(1, 10)],
default=5,
help='default'
)
# 指定位置參數(shù)foo
parser.add_argument('foo')
args = parser.parse_args()
print(f'args = {args}')
# 獲取指定參數(shù)
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
# 不帶參數(shù)運(yùn)行,結(jié)果為None
➜ git:(master) ✗ python3 test_argv.py
args = Namespace(number=None, output=None)
number = None
output = None
# 帶參數(shù)運(yùn)行
➜ git:(master) ✗ python3 test_argv.py -n 33 --output txt
args = Namespace(number=33, output='txt')
number = 33, type = class 'int'>
output = txt, type = class 'str'>
# 參數(shù)格式錯(cuò)誤
➜ 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')
# 默認(rèn)參數(shù)
➜ git:(master) ✗ python3 test_argv.py
args = Namespace(default=5, number=None, output=None)
number = None, type = class 'NoneType'>
output = None, type = class 'NoneType'>
output = 5, type = class 'int'>
以上就是Python命令行參數(shù)argv和argparse該如何使用的詳細(xì)內(nèi)容,更多關(guān)于Python命令行參數(shù)argv和argparse的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- 在ipython notebook中使用argparse方式
- Python argparse模塊使用方法解析
- Python如何使用argparse模塊處理命令行參數(shù)
- python argparser的具體使用
- Python參數(shù)解析模塊sys、getopt、argparse使用與對(duì)比分析
- Python的argparse庫(kù)使用詳解
- Python解析命令行讀取參數(shù)--argparse模塊使用方法
- Python包argparse模塊常用方法