python的ArgumentParser使用及說明
python的ArgumentParser使用
ArgumentParser是python用來標(biāo)準(zhǔn)化處理sys.argv
#!/usr/bin/env python
# coding: utf8
from argparse import ArgumentParser
OPT_BOOK = {
'dest': 'book',
'nargs': '+',
'help': 'Which book do you want study',
'required': True
}
OPT_PAGE = {
'dest': 'page',
'nargs': '+',
'help': 'Pages of book to study',
'required': True
}
OPT_ITEM = {
'dest': 'item',
'nargs': '+',
'help': 'Pages of book to study',
'required': True
}
OPT_WORD = {
'dest': 'word',
'nargs': '+',
'help': 'Pages of book to study',
'required': True
}
def _create_parser(parser_factory):
""" 創(chuàng)建二級(jí)命令
"""
parser = parser_factory('project', help='Study project')
parser.add_argument('-b', '--book', **OPT_BOOK)
parser.add_argument('-p', '--page', **OPT_PAGE)
parser.add_argument('-i', '--item', **OPT_ITEM)
parser.add_argument('-w', '--word', **OPT_WORD)
return parser
def create_argument_parser():
""" 創(chuàng)建一級(jí)命令
"""
parser = ArgumentParser(prog='study')
subparsers = parser.add_subparsers()
subparsers.dest = 'project'
subparsers.required = True
_create_parser(subparsers.add_parser)
return parser簡(jiǎn)單的使用按照以上方式來做,用程序名構(gòu)造ArgumentParser(這里是study),隨意給一個(gè)父命令add_subparsers(這里是project),然后建立解析工廠parser_factory(這里是project和父命令同名),最后給一堆的參數(shù)輸入型命令add_argument(這里是book,page,item,word,可以用不定參字典,給予幫助信息或必傳等選項(xiàng))
這里是test方法:
#!/usr/bin/env python
# coding: utf8
import sys
from utils.logger import get_logger
from utils.commander import create_argument_parser
if __name__ == '__main__':
parser = create_argument_parser()
arguments = parser.parse_args(sys.argv[1:])
get_logger().info(arguments.project)
get_logger().info(arguments.book)
get_logger().info(arguments.page)
get_logger().info(arguments.item)
get_logger().info(arguments.word)
這里是輸出:
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:project}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['book-a']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['32']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['what', 'is', 'item']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['fuck']}
python對(duì)象屬性ArgumentParser,Namespace
1. ArgumengParser
1.1. 作用
分配屬性,可以從python執(zhí)行命令參數(shù)中獲取
1.2. 導(dǎo)包
# python from argparse import ArgumentParser
1.3. 參數(shù)
ArgumentParser(prog=None)
- prog:顯示的程序名,不填則默認(rèn)是文件名
1.4. 屬性
- 1.4.1. add_argument(*args, **kwargs)
聲明創(chuàng)建屬性的規(guī)則
參數(shù)
- 第一個(gè)參數(shù): 必填,鍵名,格式:"-a"或"–a"
- dest: 非必填,參數(shù)名重置為
- default: 非必填,默認(rèn)值
- type: 非必填,參數(shù)類型
- choices: 非必填,可選值,格式:列表,元組
- required: 非必填,是否必填,默認(rèn)False
- namespace: 非必填,分配屬性的對(duì)象
- help: 非必填,說明文字
舉個(gè)栗子
# python
b = B()
parser = ArgumentParser()
parser.add_argument('--foo', dest='jjj', type=str, required=True)
parser.add_argument('-env', choices=['test', 'prod'])- 1.4.2. parse_args(args=None, namespace=None)
將參數(shù)轉(zhuǎn)為對(duì)象,并將屬性分配給命名空間
參數(shù)
- args:非必填,賦值列表,必須一一對(duì)應(yīng)
- namespace: 非必填,分配屬性的對(duì)象
舉個(gè)栗子
1.代碼行分配
# python a = parser.parse_args(['--foo', 'werw', '-env', '234']) print(a.env) # 輸出 234 b = B() parser.parse_args(['--foo', 'werw', '-env', '234'], namespace=b) print(b.env) # 輸出 234
2.啟動(dòng)命令分配
# linux python3 test.py --foo='www' -evn='234'
2. Namespace 命名空間
2.1. 作用
創(chuàng)建一個(gè)包含屬性的對(duì)象,返回該對(duì)象
2.2. 導(dǎo)包
# python from argparse import Namespace
2.3. 用法
# python a = Namespace(env='test', level=2) print(a.evn) # 輸出 test print(a.level) # 輸出 2
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決Python3 struct報(bào)錯(cuò)argument for 's' must be a bytes object
- Python之parser.add_argument解讀
- python中parser.add_argument()用法實(shí)例(命令行選項(xiàng)、參數(shù)和子命令解析器)
- 解決python腳本中error: unrecognized arguments: True錯(cuò)誤
- Python ArgumentParse的subparser用法說明
- Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問題
相關(guān)文章
pybaobabdt庫基于python的決策樹隨機(jī)森林可視化工具使用
這篇文章主要為大家介紹了pybaobabdt庫基于python的決策樹隨機(jī)森林可視化工具使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02
Playwright設(shè)置base_url的三種方式
本文主要介紹了三種在使用Playwright或pytest-playwright進(jìn)行Web自動(dòng)化測(cè)試時(shí)設(shè)置base_url的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01
如何使用Python實(shí)現(xiàn)斐波那契數(shù)列
這篇文章主要介紹了如何使用Python實(shí)現(xiàn)斐波那契數(shù)列,斐波那契數(shù)列(Fibonacci)最早由印度數(shù)學(xué)家Gopala提出,而第一個(gè)真正研究斐波那契數(shù)列的是意大利數(shù)學(xué)家 Leonardo Fibonacci,需要的朋友可以參考下2019-07-07
你需要學(xué)會(huì)的8個(gè)Python列表技巧
這篇文章主要介紹了8個(gè)常用的Python列表技巧,文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)Python,感興趣的朋友可以了解下2020-06-06
Matplotlib繪制混淆矩陣的實(shí)現(xiàn)
對(duì)于機(jī)器學(xué)習(xí)多分類模型來說,其評(píng)價(jià)指標(biāo)除了精度之外,常用的還有混淆矩陣和分類報(bào)告,下面來展示一下如何繪制混淆矩陣,這在論文中經(jīng)常會(huì)用到。感興趣的可以了解一下2021-05-05
Python?dbm庫利用鍵值對(duì)存儲(chǔ)數(shù)據(jù)
Python中的dbm模塊提供了一種輕量級(jí)的數(shù)據(jù)庫管理工具,允許開發(fā)者使用鍵值對(duì)的形式存儲(chǔ)和檢索數(shù)據(jù),這篇文章將深入介紹dbm庫的使用,探討其基礎(chǔ)功能、高級(jí)特性以及實(shí)際應(yīng)用場(chǎng)景2023-12-12
Python+Sklearn實(shí)現(xiàn)英文文本關(guān)鍵詞提取的完整代碼
在自然語言處理(NLP)的文本分析領(lǐng)域,TF-IDF 是實(shí)現(xiàn)關(guān)鍵詞提取的經(jīng)典加權(quán)算法,能精準(zhǔn)篩選出文本中兼具單篇高頻和語料庫低頻的核心詞匯,本文將基于Python+Sklearn,針對(duì)英文文本實(shí)現(xiàn) TF-IDF 的全流程實(shí)戰(zhàn),需要的朋友可以參考下2026-03-03
零基礎(chǔ)帶你掌握Python Openpyxl單元格樣式修改指南
在日常辦公中,我們經(jīng)常需要處理大量的 Excel 表格,本篇文章將系統(tǒng)地帶你走進(jìn) openpyxl 的樣式修改世界,無論你是編程小白還是有一定基礎(chǔ)的學(xué)習(xí)者,只要跟著本文的步驟,都能輕松讓你的自動(dòng)化表格漂亮起來2026-03-03

