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

您的位置:首頁技術文章
文章詳情頁

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

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

Python作為一門腳本語言,經常作為腳本接受命令行傳入參數,Python接受命令行參數大概有三種方式。因為在日常工作場景會經常使用到,這里對這幾種方式進行總結。

命令行參數模塊

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

sys.argv模塊(內置模塊)

先看一個簡單的示例:

#!/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)

調用腳本:

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模塊不難理解,命令參數作為列表傳入Python腳本中,argv[0]是腳本的名字,argv[1]則是第一個參數,后面以此類推。所以在腳本中只需要提取列表中的參數即可使用。上面演示的是正確調用Python腳本的情況,下面則是調用失敗的情況。

錯誤調用腳本:

python test_sysargv.py zhangsan 13

錯誤輸出:

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

關于錯誤也很好理解,經典的列表索引超出范圍,之所列表索引超出范圍,沒有傳入足夠的參數。當然你可以使用try...except捕獲錯誤。但是這種做法太過死板,因為在命令行中必須按照腳本規定的參數順序輸入參數,所以這種模塊使用一般是針對一些需要的參數比較少并且固定的腳本。

argparse模塊(內置模塊)

同樣的先看一個簡單的示例:

#!/usr/bin/pythonimport argparseparser = argparse.ArgumentParser(description=’Test for argparse module.’) # 構建命令參數實例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)

執行腳本:

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:

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

而上面示例中分別添加了四個屬性,--name和-n同時可以再命令行中使用,都表示了參數name。ArgumentParser通過parse_ags()方法解析參數,檢查命令行,將每個參數轉換為適當的類型,所以在腳本中同時也可以使用args.n和args.name獲取到參數,相對應的如果沒有傳入該參數,腳本中則獲取到None。

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

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: 非必要屬性

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

click模塊

先開一個簡單的使用示例:

#!/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()

執行腳本:

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

總結

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

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲无线一线二线三线区别av| 成人国产综合| 欧美va天堂在线| 国产精品久久久久久久免费软件| 欧美激情aⅴ一区二区三区| 精品国产精品国产偷麻豆| 亚洲成人三区| 国产精品高潮呻吟久久久久| 伊人精品在线| 国产精品久久久久蜜臀| 午夜宅男久久久| 黄毛片在线观看| 欧美福利在线| 国产麻豆一区| 一区在线免费| 久久精品免费看| 国产日韩一区二区三区在线 | 欧美国产中文高清| 久久狠狠婷婷| 亚洲一级在线| 国产视频一区三区| 国产精品色网| 九九99久久精品在免费线bt| 国产精品久久| 国产精品多人| 亚洲人妖在线| 日韩精品视频在线看| 国产99久久| 激情综合在线| 亚洲一区网站| 日本不卡一区二区三区| 久久不射网站| 亚洲一区二区三区四区五区午夜| 蜜臀va亚洲va欧美va天堂 | 日韩影院在线观看| 亚洲国产一区二区三区在线播放 | 免费视频久久| 影音国产精品| 免费国产亚洲视频| 亚洲三级av| 欧美综合社区国产| 国产精品午夜av| 久久久久久久欧美精品| 国产精品亚洲成在人线| 免费日韩一区二区三区| 黄色aa久久| 日韩精品免费视频人成| 精品国产乱码久久久| 欧美在线网站| 精品一区二区三区中文字幕视频| 久久成人国产| 国产精品观看| 天堂成人免费av电影一区 | 亚洲在线网站| 欧美激情日韩| 午夜亚洲精品| 福利在线一区| 在线视频免费在线观看一区二区| 国产一区二区三区不卡视频网站| 亚洲欧美日韩国产| 麻豆精品在线播放| 国产精品中文字幕制服诱惑| 国产精品99在线观看| 香蕉成人久久| 国产在线|日韩| 欧美1区2区3| 亚洲综合中文| 亚洲免费黄色| 欧美日韩第一| 日韩欧美精品一区| 国产精品二区影院| 欧美日韩亚洲一区在线观看| 亚洲国产一区二区三区在线播放| 精品国产亚洲日本| 亚洲高清影视| 久久精品在线| 日韩久久视频| 久久电影tv| 欧美aaaaaa午夜精品| 久久激情av| 欧美专区一区| 国产精品最新| 国产精品伊人| 国产欧美日韩在线观看视频 | 欧美亚洲国产日韩| 韩国精品主播一区二区在线观看| 久久免费精品| 欧美亚洲三级| 国产一区 二区| 国产欧美日韩精品一区二区免费 | 欧美日韩激情| 丁香婷婷久久| а√在线中文在线新版| 亚洲最新无码中文字幕久久| 欧美韩日一区| 麻豆国产在线| 亚洲福利专区| 亚洲综合激情在线| 日韩av三区| 免费日韩一区二区三区| av免费不卡国产观看| 欧美日韩国产亚洲一区| 亚洲精品激情| 久久精品亚洲一区二区| 999国产精品视频| 福利一区二区三区视频在线观看| 色婷婷色综合| 欧美日韩在线播放视频| 丝袜a∨在线一区二区三区不卡| 国产毛片久久久| 国产欧美自拍| 水蜜桃精品av一区二区| 91成人超碰| 国产精品自在| 1024精品久久久久久久久| 日韩精品高清不卡| 91精品韩国| 91精品国产经典在线观看| 91视频久久| 一区二区国产在线| 久久精品天堂| 亚洲精品九九| 蜜桃国内精品久久久久软件9| 国产精品久久久久久妇女 | 九一成人免费视频| 国产一区二区久久久久| 精品美女在线视频| 亚洲成人二区| 日韩福利视频导航| 999国产精品视频| 久久99精品久久久野外观看| 丝袜美腿亚洲一区| 日韩高清中文字幕一区| 国产乱码精品一区二区亚洲| 99视频+国产日韩欧美| 国产乱码午夜在线视频| 久久不见久久见国语| 日韩视频在线一区二区三区 | 久久精品97| 亚洲激情二区| 日韩精品一卡| 国产精品久久久久久久免费观看 | 韩日一区二区三区| 国产精品精品| 色婷婷色综合| 天堂а√在线最新版中文在线| 国产精品片aa在线观看| 日韩中文字幕麻豆| 欧美在线观看视频一区| 亚洲欧洲高清| 国产色播av在线| 久久99久久久精品欧美| 免费在线看一区| 亚洲人妖在线| 国产精品男女| 免费在线亚洲| 欧美aa一级| 伊人成人网在线看| 亚洲视频二区| 国产精一区二区| 麻豆一区二区三区| 日韩综合精品| 欧美日韩国产精品一区二区亚洲| 欧美日本不卡高清| 欧美国产三级| 中文在线中文资源| 欧美~级网站不卡| 亚洲精品视频一二三区| 国产探花一区在线观看| 国产精品任我爽爆在线播放| 国产精品白丝久久av网站| 国产香蕉精品| 亚洲精品国产嫩草在线观看| 久久天堂影院| 国产精品日韩久久久| 欧美三区不卡| 日韩欧美一区二区三区在线视频| 蜜桃视频在线观看一区二区| 精品99在线| 视频一区在线播放| 精品久久久中文字幕| 石原莉奈在线亚洲三区| 青草av.久久免费一区| 亚洲精品a级片| 精品视频99| 热久久国产精品| 国产精品高颜值在线观看| 免费观看亚洲天堂| 蜜臀av亚洲一区中文字幕| 亚洲深夜视频| 亚洲毛片视频| 亚洲三级在线| 五月天久久777| 久久亚洲黄色| 国产精品免费99久久久| 爽好久久久欧美精品| 亚洲va中文在线播放免费| 美腿丝袜亚洲一区| 精品国产一区二区三区性色av| 国产精品巨作av|