精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 中很好用的命令行參數解析工具

開發 后端
Python 本身就提供了三個命令行參數解析模塊,我這里羅列一下它們的大致情況供你了解。

 

Python 做為一個腳本語言,可以很方便地寫各種工具。當你在服務端要運行一個工具或服務時,輸入參數似乎是一種硬需(當然你也可以通過配置文件來實現)。

如果要以命令行執行,那你需要一個命令行參數解析的模塊來幫你做這個苦力活。

Python 本身就提供了三個命令行參數解析模塊,我這里羅列一下它們的大致情況供你了解。

  •  getopt,只能簡單的處理命令行參數
  •  optparse,功能強大,易于使用,可以方便地生成標準的、符合Unix/Posix 規范的命令行說明。(Python2.7以后棄用,不會繼續發展)
  •  argparse,使其更加容易的編寫用戶友好的命令行接口。它所需的程序進程了參數定義,argparse將更好的解析sys.argv。同時argparse模塊還能自動生成幫助及用戶輸入錯誤參數時的提示信息。

很多初學者可能會使用getopt,上手簡單功能也簡單。比如說optget無法解析一個參數多個值的情況,如 --file file1 file2 file3,而 optparse 實際上我沒有用過,但是考慮到它在Python2.7后已經不再維護,我們通常也不會使用它。

接下來只剩下argparse 這一神器,它幾乎能滿足我對命令解析器的所有需求。它支持解析一參數多值,可以自動生成help命令和幫助文檔,支持子解析器,支持限制參數取值范圍等等功能。

HelloWorld

不管學習什么東西,首先第一步都應該是掌握它的大體框架。而使用 argparse 前,框架很簡單,你只需要記住這三行。 

  1. # mytest.py  
  2. import argparse 
  3. parser = argparse.ArgumentParser(description="used for test" 
  4. args = parser.parse_args() 

現在可以嘗試一下 

  1. [root@localhost ~]# python mytest.py -h  
  2. usage: mytest.py [-h]  
  3. used for test  
  4. optional arguments:  
  5.   -h, --help  show this help message and exit  
  6. [root@localhost ~]#   
  7. [root@localhost ~]#   
  8. [root@localhost ~]# python mytest.py  
  9. [root@localhost ~]#  

已經可以使用了。

1. 入門配置

這里先講一下,比較常用的參數配置。

  •  調試:debug
  •  版本號:version 
  1. import argparse  
  2. parser = argparse.ArgumentParser()  
  3. parser.add_argument('--version', '-v', action='version' 
  4.                     version='%(prog)s version : v 0.01' 
  5.                     help='show the version' 
  6. parser.add_argument('--debug', '-d', 
  7.                     action='store_true' 
  8.                     help='show the version' 
  9.                     default=False 
  10. args = parser.parse_args()  
  11. print("=== end ===") 

上面debug處的配置,需要講一下的是 action='store_true' 和 default = False 的作用和區別

  •  store_true:一旦指定了 -d 或者 --debug ,其值就為 True,store_false則相反
  •  default=False:未指定 -d 或者 --debug,其值就默認為False

當我們執行 python mytest.py -v,就會打印 version 里的內容。 

  1. [root@localhost ~]# python mytest.py -v  
  2. mytest.py version : v 0.01  
  3. [root@localhost ~]#  

一旦執行時,指定了參數 -v ,執行到 parser.parse_args() 就會退出程序,不會打印最后的=== end ===

2. 參數種類

參數可分為 必選參數(positional arguments) 和 可選參數(optional arguments)。

在argsparse 里如何實現呢?

必選參數

用單詞做參數,默認就為必選參數 

  1. # mytest.py  
  2. import argparse  
  3. parser = argparse.ArgumentParser()  
  4. parser.add_argument("name")  
  5. args = parser.parse_args()  
  6. print(args.name) 

不指定name參數運行一下:python mytest.py 

  1. [root@localhost ~]# python mytest.py  
  2. usage: mytest.py [-h] name  
  3. mytest.py: error: too few arguments  
  4. [root@localhost ~]# 

如預期一樣,報錯了,說缺少參數。那我們指定一下:python mytest.py name wangbm 

  1. [root@localhost ~]# python mytest.py wangbm  
  2. wangbm  
  3. [root@localhost ~]#  

可選參數

有兩種方式:

  •  單下劃線 - 來指定的短參數,如-h;
  •  雙下劃線 -- 來指定的長參數,如--help 
  1. # mytest.py  
  2. import argpars  
  3. parser = argparse.ArgumentParser()  
  4. parser.add_argument("-v", "--verbosity",  
  5.                     help="increase output verbosity" 
  6. args = parser.parse_args()  
  7. if args.verbosity:  
  8.     print("verbosity turned on")  
  9. else:  
  10.     print("verbosity turned off") 

運行 python mytest.py,不會報錯。 

  1. [root@localhost ~]# python mytest.py  
  2. verbosity turned off  
  3. [root@localhost ~]# 

3. 參數類型

有的參數,是字符串,有的參數,是數值。

為了對命令行中的參數進行有效的約束,我們可以事先對參數的類型進行聲明。argparse 會對參數進行校驗,不通過時,會直接拋出錯誤。 

  1. # mytest.py  
  2. import argparse  
  3. parser = argparse.ArgumentParser()  
  4. parser.add_argument("name")  
  5. parser.add_argument("age", type=int 
  6. args = parser.parse_args()  
  7. print(args.name)  
  8. print(args.age) 

測試一下唄。 

  1. [root@localhost ~]# python mytest.py wangbm eighteen  
  2. usage: mytest.py [-h] name age  
  3. mytest.py: error: argument age: invalid int value: 'eighteen'  
  4. [root@localhost ~]#   
  5. [root@localhost ~]# python mytest.py wangbm 18  
  6. wangbm  
  7. 18  
  8. [root@localhost ~]# 

你看,寫 eighteen 就不行,提示類型不合法,只有寫 18 才行。

4 互斥參數

有些參數,是互斥的,有你無我。比如,性別。

在 argparse 中如何實現? 

  1. import argparse  
  2. parser = argparse.ArgumentParser()  
  3. group = parser.add_mutually_exclusive_group()  
  4. group.add_argument("-m", "--male", action="store_true" 
  5. group.add_argument("-f", "--female", action="store_true" 
  6. args = parser.parse_args() 

如果同時指定了這兩個參數,就會報錯。 

  1. [root@localhost ~]# python mytest.py -f  
  2. [root@localhost ~]# python mytest.py -m  
  3. [root@localhost ~]# python mytest.py -m -f   
  4. usage: mytest.py [-h] [-m | -f]  
  5. mytest.py: error: argument -f/--female: not allowed with argument -m/--male  
  6. [root@localhost ~]#  

5 可選值

如果是性別,可以像上面那樣放在兩個參數里然后用互斥組來約束,也可以放在一個參數里,在argparse里限制再在外層做判斷。 

  1. # mytest.py  
  2. import argparse  
  3. parser = argparse.ArgumentParser()  
  4. parser.add_argument("-g", "--gender", default='male' 
  5.                     choices=['male', 'female'])  
  6. args = parser.parse_args() 
  7. print(args.gender) 

試著執行一下,發現性別只能是男或女,不能為人妖。 

  1. [root@localhost ~]# python mytest.py --gender male  
  2. male  
  3. [root@localhost ~]# python mytest.py --gender female  
  4. female  
  5. [root@localhost ~]#   
  6. [root@localhost ~]#   
  7. [root@localhost ~]# python mytest.py --gender other  
  8. usage: mytest.py [-h] [-g {male,female}]  
  9. mytest.py: error: argument -g/--gender: invalid choice: 'other' (choose from 'male', 'female')  
  10. [root@localhost ~]# 

6. 指定文件

經常會有那種要在腳本中指定配置文件或者其他文件的需求??梢允褂孟旅娴呐渲?nbsp;

  1. import argparse  
  2. parser = argparse.ArgumentParser()  
  3. parser.add_argument('--file', '-f', action='append' 
  4.                     dest='files' 
  5.                     help=('additional yaml configuration files to use'),  
  6.                     type=argparse.FileType('rb'))  
  7. args = parser.parse_args() 

dest=files,是說將命令行中,--file 的參數值賦值給變量files,你可以用args.files訪問。

action=append,由于我們會有指定多個文件的需求,那就指定多次--file ,argparse會將其放在一個list里。

type=argparse.FileType('rb'),既然是指定文件,那么參數應該為路徑,并指定打開模式為rb,如果如果要取得文件內容,可以用 args.files[0].read()

7. 子解析器

如果你對命令行,有過足夠多的接觸,就會知道有些情況下會有子解析器。

這里我以自己工作中,碰到的例子來舉個例子。 

  1. cloud-init --debug single -name mymodule 

其中 single 后面是一個子解析器。 

  1. # cloud-init.py  
  2. def main_single(name, args):  
  3.     print("name: ", name)  
  4.     print("args: ", args)  
  5.     print("I am main_single")  
  6. # 添加一個子解析器  
  7. subparsers = parser.add_subparsers()  
  8. parser_single = subparsers.add_parser('single',  
  9.                       help='run a single module' 
  10. # 對single 子解析器添加 action 函數。  
  11. parser_single.set_defaults(action=('single', main_single)) 
  12. require=True: 命令行指定了single解析器,必須帶上--name的參數。  
  13. parser_single.add_argument("--name", '-n', action="store" 
  14.                            help="module name to run" 
  15.                            required=True 
  16. args = parser.parse_args()  
  17. (name, functor) = args.action  
  18. if name in ["single"]:  
  19.     functor(name, args) 

執行命令cloud-init single -name mymodule,輸出如下 

  1. name:  single  
  2. args:  Namespace(action=('single', <function main_single at 0x0000000003F161E0>), debug=Falsefile=Nonename='mymodule' 
  3. I am main_single 

以上,就是 argparse 的使用方法。 

 

責任編輯:龐桂玉 來源: 機器學習算法與Python學習
相關推薦

2023-07-05 08:38:48

GolangGo語言

2021-11-15 14:30:49

Pythonargparse編程語言

2011-01-18 19:11:26

Postfix命令行

2021-01-13 05:29:26

命令行

2010-03-10 17:23:37

Python 命令行參

2019-11-06 19:21:07

Pythonargparse解釋器

2024-04-29 07:38:20

PythonDocopt開發

2022-02-17 18:21:47

工具HTTPie客戶端

2020-12-11 06:44:16

命令行工具開發

2020-12-10 16:16:08

工具代碼開發

2010-11-24 15:33:59

mysql命令行參數

2009-07-20 09:55:30

華為命令行解析華為認證

2010-08-20 10:05:23

用戶命令

2009-07-15 17:10:26

Jython解析命令行

2010-07-15 10:47:22

Perl命令行

2018-05-04 09:15:35

PythonPlumbum命令行

2020-08-09 18:06:57

Linux系統工具

2023-06-09 07:45:29

Kuberneteskubectl

2022-08-01 08:30:26

Python命令行

2021-07-16 16:47:40

命令行工具開源
點贊
收藏

51CTO技術棧公眾號

视频一区在线视频| 欧美色女视频| 懂色av一区二区三区| 国产主播一区二区三区四区| www.国产com| 日韩欧美网站| 日韩免费一区二区| 蜜臀av午夜一区二区三区| 日本免费在线观看| 成人精品免费看| 日韩av免费网站| 成人在线观看免费完整| 牛牛精品成人免费视频| 欧美色倩网站大全免费| 亚洲精品蜜桃久久久久久| 性感美女福利视频| 国产一区二区三区综合| 欧美诱惑福利视频| 91嫩草丨国产丨精品| 亲子伦视频一区二区三区| 欧美日韩久久不卡| 日韩av新片网| 欧美r级在线| 久久综合狠狠综合久久激情 | 亚洲在线观看一区| 亚洲av成人精品一区二区三区在线播放| 麻豆精品一二三| 69精品小视频| 校园春色 亚洲| 国产欧美日韩精品一区二区三区| 日韩欧美一区中文| 182午夜在线观看| 美女福利一区二区三区| 亚洲国产中文字幕| 免费观看中文字幕| 91caoporn在线| 久久久久高清精品| 精品国产一区二区三区久久久久久| 国产又粗又大又黄| 日本欧美加勒比视频| 午夜精品免费视频| 欧美黑人性猛交xxx| 青青草97国产精品麻豆| 亚洲裸体xxxx| 亚洲第一黄色网址| 国产一区二区三区亚洲| 日韩欧美中文字幕制服| 男女污污视频网站| 国产精品一区二区三区av| 在线观看亚洲成人| 亚洲性生活网站| 另类图片综合电影| 日本二三区不卡| 人妻熟女一二三区夜夜爱| 理论不卡电影大全神| 亚洲五月六月丁香激情| 国产精品videossex国产高清| mm1313亚洲国产精品美女| 国产精品美女久久福利网站| 亚洲精品第一区二区三区| 番号集在线观看| 国产日韩精品一区二区浪潮av| 久久久久资源| 青青草在线免费视频| 久久综合狠狠综合久久激情| 九色综合日本| 麻豆影视在线| 亚洲国产激情av| 亚洲v国产v| 狠狠狠综合7777久夜色撩人| 日本性爱视频在线观看| 国产精品的网站| 亚洲精品在线视频观看| www.av在线| 国产精品污www在线观看| 亚洲高清不卡一区| 黄色小网站在线观看| 亚洲天天做日日做天天谢日日欢| 超碰10000| wwww在线观看免费视频| 懂色av中文一区二区三区天美| 欧美 日韩 国产 高清| 国产精品迅雷| 欧美色涩在线第一页| 91pony九色| 亚洲天堂中文字幕在线观看| 日韩高清有码在线| аⅴ天堂中文在线网| 99久久久久久中文字幕一区| 欧美大奶子在线| 日韩欧美激情视频| 日韩福利视频导航| 亚洲自拍偷拍一区| 深夜福利在线观看直播| 国产欧美日韩三级| 九九久久九九久久| 日韩欧美精品一区二区三区| 欧美亚洲一区二区在线| 黑人巨大猛交丰满少妇| 欧美日韩破处| 俺去啦;欧美日韩| 日韩三级免费看| 久久99久久99精品免视看婷婷| 国产成人成网站在线播放青青| 四虎精品成人影院观看地址| 国产精品二三区| 免费超爽大片黄| 成人免费一区| 亚洲成av人影院在线观看| 久久中文字幕精品| 亚洲性图久久| 国产一区欧美二区三区| 特黄视频在线观看| 国产精品不卡一区二区三区| 凹凸国产熟女精品视频| 日韩精品视频在线看| 亚洲天堂av综合网| 日本亚洲欧美在线| 韩国v欧美v日本v亚洲v| 欧美日韩国产精品一卡| 香蕉成人app免费看片| 在线国产亚洲欧美| 欧美一级片黄色| 亚洲精品va| 国产精品xxxxx| 深爱激情五月婷婷| 亚洲另类在线视频| 亚洲精品20p| 亚洲春色h网| 欧美激情视频在线观看| 伊人色综合久久久| 久久视频一区二区| 3d动漫一区二区三区| 精品视频一区二区三区| 中文字幕亚洲一区二区三区五十路 | 欧美a级在线观看| 日韩一区二区三区三四区视频在线观看 | 亚洲国产精品大全| 欧美日韩精品亚洲精品| 麻豆国产精品视频| 日韩欧美国产二区| 亚洲欧洲自拍| 亚洲精品乱码久久久久久按摩观| 极品颜值美女露脸啪啪| 久久激情五月激情| 亚洲精品日韩精品| 成人自拍视频网| 一本色道久久综合狠狠躁篇的优点 | 蜜桃成人av| 97久久精品人搡人人玩| 精品人妻一区二区三区麻豆91| 国产精品久久久久影院色老大| 能在线观看的av网站| 国产欧美日韩精品高清二区综合区| 66m—66摸成人免费视频| 视频二区在线观看| 亚洲综合在线视频| 亚洲精品激情视频| 国产日韩欧美一区在线| 精品欧美一区二区在线观看视频| 爱啪视频在线观看视频免费| 亚洲第一网中文字幕| 豆国产97在线 | 亚洲| 成人免费高清视频| ww国产内射精品后入国产| 欧美调教网站| 国产ts一区二区| 福利视频在线看| 欧美日韩视频在线第一区 | 色综合中文网| 国产精品福利在线| 美女隐私在线观看| 精品区一区二区| 国产香蕉视频在线| 久久久五月婷婷| 久久久久国产一区| 欧美黄污视频| 国产在线观看一区| 欧美第一视频| 久久精品电影网| 蜜桃视频久久一区免费观看入口| 欧美午夜精品久久久久久人妖 | 小嫩嫩12欧美| 国产精品久久av| 国产在线激情| 亚洲国产一区二区三区四区| 欧美成人一区二区三区四区| 国产精品久久99| 又黄又色的网站| 日韩中文字幕区一区有砖一区| 永久久久久久| 九色丨蝌蚪丨成人| 国产精品一区二区三区成人| 羞羞的网站在线观看| 日韩电影在线观看永久视频免费网站| 精品国产xxx| |精品福利一区二区三区| 中文字幕无码人妻少妇免费| 男人的天堂久久精品| 日本大片免费看| 精品日本12videosex| 97碰碰视频| 久久久成人av毛片免费观看| 欧美黑人国产人伦爽爽爽| 黄色片视频在线观看| 欧美大胆一级视频| 中文字幕在线播放av| 亚洲国产精品精华液网站| 亚洲图片第一页| av不卡在线播放| 午夜天堂在线视频| 久久免费高清| 人妻无码久久一区二区三区免费 | 国产婷婷色综合av蜜臀av| 91在线视频国产| 色婷婷av一区二区三区大白胸| 免费毛片在线播放免费| 中日韩免费视频中文字幕| 波多野结衣影院| 国产精品996| 91极品视频在线观看| 香蕉久久夜色精品国产| 成年人深夜视频| 天天射综合网视频| 日本视频一区二区在线观看| 国产精品毛片视频| 亚洲综合在线播放| 日本成人在线网站| 国产精品都在这里| 欧美舌奴丨vk视频| 2019中文字幕免费视频| 国产乱码在线| 美日韩丰满少妇在线观看| 99青草视频在线播放视| 亚洲欧洲在线视频| 日本国产在线| 亚洲激情视频在线观看| 黄色片一区二区| 欧美一级欧美一级在线播放| 97国产精品久久久| 欧美在线啊v一区| 超碰在线97观看| 狠狠色狠狠色综合日日小说| 亚洲一区欧美在线| 亚洲 欧美综合在线网络| 久久久久久久蜜桃| 亚洲自拍偷拍综合| 久久久久久久久久网站| 亚洲欧美一区二区三区极速播放| 殴美一级黄色片| 中文字幕一区在线观看视频| 99精品中文字幕| 国产精品久久久久天堂| 在线视频这里只有精品| 1024亚洲合集| 加勒比av在线播放| 亚洲一二三四久久| 国产午夜免费视频| 亚洲国产毛片aaaaa无费看| 久久久99精品| 五月激情丁香一区二区三区| 国产无套粉嫩白浆内谢| 欧美日在线观看| 最近免费中文字幕大全免费版视频| 色综合色狠狠综合色| 国产成人a v| 欧美日韩极品在线观看一区| 国产精品久久久久久久一区二区 | 日韩av在线中文| 久久国产欧美日韩精品| 日韩欧美理论片| 岛国精品在线观看| 女尊高h男高潮呻吟| 国产欧美一区二区三区在线看蜜臀| 青青草华人在线视频| 自拍偷拍亚洲综合| 国产一级做a爱免费视频| 欧美性色19p| 亚洲综合精品视频| 日韩视频在线永久播放| 亚洲欧美日韩精品永久在线| 亚洲欧洲在线播放| 国产cdts系列另类在线观看| 久久免费精品视频| 456亚洲精品成人影院| 91九色视频在线| 精品丝袜久久| 天天好比中文综合网| 女人色偷偷aa久久天堂| 精品人妻一区二区三区四区在线| 青青草伊人久久| 中文字幕一二三| 久久久精品日韩欧美| 欧美国产日韩在线观看成人| 欧美日韩国产丝袜另类| 91中文字幕在线播放| 国产偷亚洲偷欧美偷精品| 蜜桃视频在线观看www社区| 2019中文字幕在线观看| 国产精品xnxxcom| 欧美精品一区二区三区在线看午夜 | 欧美裸体bbwbbwbbw| 欧美一级视频免费| 色先锋资源久久综合5566| 超碰成人av| 成人欧美一区二区三区在线| 台湾色综合娱乐中文网| 久久人妻无码一区二区| 老**午夜毛片一区二区三区 | 久久久久99精品成人片我成大片| 6080国产精品一区二区| 午夜性色福利影院| 久久影院免费观看| 日本精品不卡| 国产伦精品一区二区三区视频免费| 久久久综合色| 爱福利视频一区二区| 国产91精品在线观看| 福利视频第一页| 色菇凉天天综合网| 日韩专区第一页| 欧美国产日韩二区| 在线免费成人| 亚洲欧美丝袜| 久久精品欧洲| 日韩精品一区二区三区高清免费| 亚洲人午夜精品天堂一二香蕉| 黄色片视频免费| 精品亚洲国产视频| 爱啪啪综合导航| www久久99| 在线观看国产精品入口| 一本色道久久亚洲综合精品蜜桃| 久久精品亚洲精品国产欧美 | 久草中文在线观看| 国产精品私拍pans大尺度在线| 九九视频免费观看视频精品| 欧美二区在线视频| av不卡免费电影| 国产在线综合网| 精品久久久久一区二区国产| 18在线观看的| 91精品婷婷国产综合久久蝌蚪| 久久一区二区三区喷水| 日日躁夜夜躁aaaabbbb| 国产欧美va欧美不卡在线| 四虎成人永久免费视频| 精品性高朝久久久久久久| 亚洲欧美韩国| 欧美成人在线免费观看| 国产精品一页| 男生裸体视频网站| 色综合天天综合| 黄网在线免费| 国产精品情侣自拍| 天天做综合网| 男人女人拔萝卜视频| 亚洲综合在线视频| 手机看片1024国产| 欧美中文在线视频| 欧美精品尤物在线观看| 国产免费又粗又猛又爽| 国产精品免费av| av av片在线看| 久久久久久久久亚洲| 欧美日韩一本| 亚洲免费av一区二区三区| 国产精品二区一区二区aⅴ污介绍| 国产农村老头老太视频| 久久久久久久色| 台湾色综合娱乐中文网| 我要看一级黄色大片| 亚洲天堂中文字幕| 韩国av电影在线观看| 热re91久久精品国99热蜜臀| 日韩毛片视频| 亚洲成人福利视频| 欧美日韩免费看| 亚洲搞黄视频| 成人免费在线看片| 久热综合在线亚洲精品| 色www亚洲国产阿娇yao| 欧美大片日本大片免费观看| 一个人www视频在线免费观看| 午夜精品电影在线观看| 国产精品白丝jk白祙喷水网站| 免费在线不卡视频| 色系列之999| 久久男人av| 91日韩视频在线观看| 亚洲影院免费观看| 国产高清一级毛片在线不卡| 成人xxxx视频| 西西裸体人体做爰大胆久久久| 亚洲精品视频网址| 精品粉嫩aⅴ一区二区三区四区| 国模视频一区| 国内精品视频一区二区三区| 欧美高清在线精品一区| 人妻一区二区三区免费|