日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解python中的三種命令行模塊(sys.argv,argparse,click)

瀏覽:178日期:2022-07-02 09:43:16

Python作為一門腳本語言,經(jīng)常作為腳本接受命令行傳入?yún)?shù),Python接受命令行參數(shù)大概有三種方式。因?yàn)樵谌粘9ぷ鲌鼍皶?jīng)常使用到,這里對這幾種方式進(jìn)行總結(jié)。

命令行參數(shù)模塊

這里命令行參數(shù)模塊平時(shí)工作中用到最多就是這三種模塊:sys.argv,argparse,click。sys.argv和argparse都是內(nèi)置模塊,click則是第三方模塊。

sys.argv模塊(內(nèi)置模塊)

先看一個(gè)簡單的示例:

#!/usr/bin/pythonimport sysdef hello(name, age, sex, *args): print('Hello, My name is {name}.'.format(name=name)) print('I’m {age} years old.'.format(age=age)) print('I’m a {sex}'.format(sex=sex)) print('Other word:n{args}'.format(args='n'.join(args)))if __name__ == '__main__': file_name = sys.argv[0] name = sys.argv[1] age = sys.argv[2] sex = sys.argv[3] other = sys.argv[4:] hello(name, age, sex, *other)

調(diào)用腳本:

python test_sysargv.py zhangsan 13 man nibi ss

腳本輸出:

Hello, My name is zhangsan.I’m 13 years old.I’m a manOther word:nibiss

sys.argv模塊不難理解,命令參數(shù)作為列表傳入Python腳本中,argv[0]是腳本的名字,argv[1]則是第一個(gè)參數(shù),后面以此類推。所以在腳本中只需要提取列表中的參數(shù)即可使用。上面演示的是正確調(diào)用Python腳本的情況,下面則是調(diào)用失敗的情況。

錯(cuò)誤調(diào)用腳本:

python test_sysargv.py zhangsan 13

錯(cuò)誤輸出:

Traceback (most recent call last): File 'test_sysargv.py', line 16, in <module> sex = sys.argv[3]IndexError: list index out of range

關(guān)于錯(cuò)誤也很好理解,經(jīng)典的列表索引超出范圍,之所列表索引超出范圍,沒有傳入足夠的參數(shù)。當(dāng)然你可以使用try...except捕獲錯(cuò)誤。但是這種做法太過死板,因?yàn)樵诿钚兄斜仨毎凑漳_本規(guī)定的參數(shù)順序輸入?yún)?shù),所以這種模塊使用一般是針對一些需要的參數(shù)比較少并且固定的腳本。

argparse模塊(內(nèi)置模塊)

同樣的先看一個(gè)簡單的示例:

#!/usr/bin/pythonimport argparseparser = argparse.ArgumentParser(description=’Test for argparse module.’) # 構(gòu)建命令參數(shù)實(shí)例parser.add_argument('--name', '-n', help='name attribute: 非必要屬性')parser.add_argument('--age', '-a', help='age attribute: 非必要屬性')parser.add_argument('--sex', '-s', help='sex attribute: 非必要屬性')parser.add_argument('--type', '-t', help='type attribute: 非必要屬性', required=True)args = parser.parse_args()def hello(name, age, sex, *args): print('Hello, My name is {name}.'.format(name=name)) print('I’m {age} years old.'.format(age=age)) print('I’m a {sex}'.format(sex=sex)) print('Other word:n{args}'.format(args='n'.join(args)))if __name__ == '__main__': print('Format of transfer file: {type}'.format(type=args.type)) if args.name and args.age and args.sex: hello(args.name, args.age, args.sex)

執(zhí)行腳本:

python3 test_argparse.py -t json -n zhangsan -a 13 -s man

腳本成功輸出:

Format of transfer file: jsonHello, My name is zhangsan.I’m 13 years old.I’m a manOther word:

關(guān)于argparse模塊的使用,首先需要生成一個(gè)命令行參數(shù)的實(shí)例,然后通過對這個(gè)對象添加屬性,添加需要從命令行獲取的參數(shù),包括哪些是必要參數(shù)(required=True),哪些非必要參數(shù),同時(shí)也可以對每個(gè)參數(shù)進(jìn)行幫助提示(help='')。

而上面示例中分別添加了四個(gè)屬性,--name和-n同時(shí)可以再命令行中使用,都表示了參數(shù)name。ArgumentParser通過parse_ags()方法解析參數(shù),檢查命令行,將每個(gè)參數(shù)轉(zhuǎn)換為適當(dāng)?shù)念愋停栽谀_本中同時(shí)也可以使用args.n和args.name獲取到參數(shù),相對應(yīng)的如果沒有傳入該參數(shù),腳本中則獲取到None。

查看命令行參數(shù)之后腳本的幫助提示:

python3 test_argparse.py -husage: test_argparse.py [-h] [--name NAME] [--age AGE] [--sex SEX] --type TYPETest for argparse module.optional arguments: -h, --help show this help message and exit --name NAME, -n NAME name attribute: 非必要屬性 --age AGE, -a AGE age attribute: 非必要屬性 --sex SEX, -s SEX sex attribute: 非必要屬性 --type TYPE, -t TYPE type attribute: 非必要屬性

另外在添加命令行參數(shù)的屬性中,還有更多的設(shè)置,多余的可以參考Python官方文檔,里面都有詳細(xì)的標(biāo)注,這里就不展開來講,總結(jié)的就是關(guān)于argparse模塊的使用非常簡便,同時(shí)十分人性化,也很符合日常工作的需要。

click模塊

先開一個(gè)簡單的使用示例:

#!/usr/bin/pythonimport click@click.command()@click.option('--name', default='zhangsan', help='name attribute: 非必要屬性')@click.option('--age', help='age attribute', type=int)@click.option('--sex', help='sex attribute')@click.option('-t', help='type attribute: 必要屬性', required=True)def hello(t, name, age, sex, *args): print('Format of transfer file: {type}'.format(type=t)) print('Hello, My name is {name}.'.format(name=name)) print('I’m {age} years old.'.format(age=age)) print('I’m a {sex}'.format(sex=sex)) print('Other word:n{args}'.format(args='n'.join(args)))if __name__ == '__main__': hello()

執(zhí)行腳本:

python3 test_click.py -t 1 --age 13 --sex man

腳本輸出:

Format of transfer file: 1Hello, My name is zhangsan.I’m 13 years old.I’m a manOther word:

click模塊是Flask團(tuán)隊(duì)優(yōu)秀的開源項(xiàng)目,使用方法和argparse模塊很相似,同樣為命令行封裝了大量的方法,使用者只需要專注代碼功能的實(shí)現(xiàn)。click模塊和argparse模塊不同的地方就是,click模塊使用裝飾器的方式給函數(shù)添加命令行屬性,關(guān)于裝飾器簡單來講就是能夠在不修改原有函數(shù)的基礎(chǔ)上添加功能。雖然使用裝飾器但是添加命令行屬性的方式和argparse模塊很相似,包括options中常用的參數(shù)含義也有很多類似的地方。值得注意的就是一開始需要通過command()將函數(shù)成為命令行的接口。關(guān)于的click模塊的就大致講到這里,其余有興趣的可以再去了解一下。

總結(jié)

關(guān)于這三個(gè)模塊值得注意的是,盡量貼近自己應(yīng)用場景去選擇,真正的做到自己能夠方便使用才是你去使用這些模塊的原因。

以上就是詳解python中的三種命令行模塊(sys.argv,argparse,click)的詳細(xì)內(nèi)容,更多關(guān)于python 命令行模塊的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品毛片一区二区在线看| 欧美日韩精品免费观看视频完整| 亚洲精品2区| 亚洲性图久久| 在线亚洲国产精品网站| 在线观看精品| 亚洲成av在线| 秋霞影视一区二区三区| 1000部精品久久久久久久久| 国产专区一区| 国产精品嫩草99av在线| 婷婷亚洲精品| 国产欧美日韩影院| 日本精品黄色| 国产一区二区三区不卡av| 亚洲不卡系列| 日韩精品欧美激情一区二区| 久久人人97超碰国产公开结果| 99久久精品费精品国产| 国产综合精品| 国产偷自视频区视频一区二区| 天堂va欧美ⅴa亚洲va一国产| 国产精品极品在线观看| 久久天堂成人| 日韩美女精品| 色吊丝一区二区| 日韩av资源网| 欧洲一级精品| 日韩avvvv在线播放| 国产精品蜜芽在线观看| 日韩制服丝袜av| 国产九九精品| 午夜精品影院| 老牛国内精品亚洲成av人片| 亚洲国产不卡| 精品美女视频 | 精品午夜视频| 蜜桃视频一区二区| 日韩精品影视| 国产毛片久久久| 黄色免费成人| 亚洲不卡系列| 激情中国色综合| 国产亚洲高清在线观看| 久久久久国产| 久久精品亚洲| 日本欧美久久久久免费播放网| 一区二区三区视频免费观看| 国产精品久久久久久久久久白浆 | 久久婷婷丁香| 激情久久99| 精品三区视频| 国产精品theporn| 日本一不卡视频| 在线一区二区三区视频| 午夜久久免费观看| 精品一区在线| 九九综合在线| 精品欧美视频| 日韩av在线播放网址| 欧美激情三区| 精品少妇一区| 国产精品不卡| 久久天堂av| 亚洲精品2区| 噜噜噜躁狠狠躁狠狠精品视频| 天堂va蜜桃一区二区三区| 国产精品试看| 亚洲色图国产| 日本一区二区三区中文字幕| 日本午夜免费一区二区 | www.com.cn成人| 欧美freesex黑人又粗又大| 国产一区二区三区精品在线观看| 福利视频一区| 欧美丝袜一区| 中文字幕日韩高清在线| 欧美日韩视频免费看| 国产精品成人3p一区二区三区| 麻豆传媒一区二区三区| av一区在线| 午夜亚洲福利| 久久亚洲国产精品尤物| 福利片在线一区二区| 在线国产一区二区| 久久国产免费看| 精品久久视频| 午夜欧美在线| 国产激情一区| 国产91久久精品一区二区| 亚洲涩涩av| 精品久久国产一区| 免费日韩av片| 成人综合一区| 亚洲精品日韩久久| 欧美日韩国产v| 四虎精品永久免费| 久久激情中文| 国产精品天天看天天狠| 999国产精品永久免费视频app| 午夜性色一区二区三区免费视频| 欧美激情一区| 欧美专区18| 日韩中文影院| 日韩国产精品久久久久久亚洲| 亚洲v在线看| 国产精品嫩草影院在线看| 日韩毛片视频| 国产日韩欧美一区二区三区在线观看 | 男女精品网站| 精品视频一区二区三区四区五区| 久久先锋影音| 欧美精选一区二区三区| 日韩高清一区在线| 国产伊人久久| 国产一精品一av一免费爽爽| 91精品国产调教在线观看| 水野朝阳av一区二区三区| 少妇精品导航| 欧美日韩午夜| 日本大胆欧美人术艺术动态| 99久久婷婷| 色综合www| 欧洲一区二区三区精品| 欧美日韩一区自拍| 青草国产精品| 97久久亚洲| 国产精品密蕾丝视频下载| 亚洲精品黄色| 麻豆久久精品| 亚洲色图综合| 日本精品国产| 欧美一区自拍| 精品中文在线| 97精品国产| 午夜久久中文| 激情欧美丁香| 欧美日韩国产欧| 亚洲免费资源| 欧美激情三区| 亚洲午夜久久久久久尤物| 日韩在线播放一区二区| 日韩专区视频网站| 中文字幕一区日韩精品| 日本午夜免费一区二区| 久久久国产精品网站| 国产传媒在线观看| 久久激情网站| 日韩成人一级| 欧美精品日日操| 免费不卡在线视频| 国产精品网在线观看| 免费污视频在线一区| 国产精品美女| 国产精品hd| 亚洲国产日韩欧美在线| 久久国产欧美日韩精品| 欧美日韩免费看片| 性色一区二区| yellow在线观看网址| 水野朝阳av一区二区三区| 精品久久国产一区| 蜜桃av一区二区三区电影| 国产精品久久久网站| 久久精品xxxxx| 国产精品精品国产一区二区| 麻豆国产欧美一区二区三区| 亚洲精品自拍| 蜜桃久久av一区| 亚洲精品一区二区在线看| 在线一区av| 精品欧美视频| 欧美激情日韩| 国产精品天堂蜜av在线播放| 国产乱人伦精品一区| 亚洲精品精选| 日韩av电影一区| 日本天堂一区| 国产日韩欧美一区二区三区在线观看| 亚洲欧美日韩国产| 99在线精品免费视频九九视| 成人在线网站| 久久九九精品| 夜夜精品视频| 在线视频观看日韩| 男人的天堂久久精品| 四虎在线精品| 国产精品久久久久久久免费观看| 欧美日韩国产v| 日韩精品中文字幕第1页| 中文日韩欧美| 国产精品久久久久久久久久白浆| 国产精选久久| 色在线中文字幕| 激情综合激情| 国产视频亚洲| 日韩av中文字幕一区| av在线资源| 午夜在线播放视频欧美| 亚洲精品日本|