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

帶你了解3個Python命令行工具

開發 后端
用 Click、Docopt 和 Fire 庫寫你自己的命令行應用。對于這個月的 Python 專欄,我們有 3 個庫想介紹給希望為自己編寫命令行工具的 Python 使用者。

帶你了解3個Python命令行工具

用 Click、Docopt 和 Fire 庫寫你自己的命令行應用。

有時對于某項工作來說一個命令行工具就足以勝任。命令行工具是一種從你的 shell 或者終端之類的地方交互或運行的程序。GitCurl 就是兩個你也許已經很熟悉的命令行工具。

當你有一小段代碼需要在一行中執行多次或者經常性地被執行,命令行工具就會很有用。Django 開發者執行 ./manage.py runserver 命令來啟動他們的網絡服務器;Docker 開發者執行 docker-compose up 來啟動他們的容器。你想要寫一個命令行工具的原因可能和你一開始想寫代碼的原因有很大不同。

對于這個月的 Python 專欄,我們有 3 個庫想介紹給希望為自己編寫命令行工具的 Python 使用者。

 

Click

Click 是我們***的用來開發命令行工具的 Python 包。其:

  • 有一個富含例子的出色文檔
  • 包含說明如何將命令行工具打包成一個更加易于執行的 Python 應用程序
  • 自動生成實用的幫助文本
  • 使你能夠疊加使用可選和必要參數,甚至是 多個命令
  • 有一個 Django 版本( django-click )用來編寫管理命令

Click 使用 @click.command() 去聲明一個函數作為命令,同時可以指定必要和可選參數。

  1. # hello.py
  2. import click
  3.  
  4. @click.command()
  5. @click.option('--name', default='', help='Your name')
  6. def say_hello(name):
  7. click.echo("Hello {}!".format(name))
  8.  
  9. if __name__ == '__main__':
  10. say_hello()

@click.option() 修飾器聲明了一個 可選參數 ,而 @click.argument() 修飾器聲明了一個 必要參數。你可以通過疊加修飾器來組合可選和必要參數。echo() 方法將結果打印到控制臺。

  1. $ python hello.py --name='Lacey'
  2. Hello Lacey!

 

Docopt

Docopt 是一個命令行工具的解析器,類似于命令行工具的 Markdown。如果你喜歡流暢地編寫應用文檔,在本文推薦的庫中 Docopt 有著***的格式化幫助文本。它不是我們***的命令行工具開發包的原因是它的文檔猶如把人扔進深淵,使你開始使用時會有一些小困難。然而,它仍是一個輕量級的、廣受歡迎的庫,特別是當一個漂亮的說明文檔對你來說很重要的時候。

Docopt 對于如何格式化文章開頭的 docstring 是很特別的。在工具名稱后面的 docsring 中,頂部元素必須是 Usage: 并且需要列出你希望命令被調用的方式(比如:自身調用,使用參數等等)。Usage: 需要包含 helpversion 參數。

docstring 中的第二個元素是 Options:,對于在 Usages: 中提及的可選項和參數,它應當提供更多的信息。你的 docstring 的內容變成了你幫助文本的內容。

  1. """HELLO CLI
  2.  
  3. Usage:
  4. hello.py
  5. hello.py <name>
  6. hello.py -h|--help
  7. hello.py -v|--version
  8.  
  9. Options:
  10. <name> Optional name argument.
  11. -h --help Show this screen.
  12. -v --version Show version.
  13. """
  14.  
  15. from docopt import docopt
  16.  
  17. def say_hello(name):
  18. return("Hello {}!".format(name))
  19.  
  20.  
  21. if __name__ == '__main__':
  22. arguments = docopt(__doc__, version='DEMO 1.0')
  23. if arguments['<name>']:
  24. print(say_hello(arguments['<name>']))
  25. else:
  26. print(arguments)

在最基本的層面,Docopt 被設計用來返回你的參數鍵值對。如果我不指定上述的 name 調用上面的命令,我會得到一個字典的返回值:

  1. $ python hello.py
  2. {'--help': False,
  3.  '--version': False,
  4.  '<name>': None}

這里可看到我沒有輸入 helpversion 標記并且 name 參數是 None

但是如果我帶著一個 name 參數調用,say_hello 函數就會執行了。

  1. $ python hello.py Jeff
  2. Hello Jeff!

Docopt 允許同時指定必要和可選參數,且各自有著不同的語法約定。必要參數需要在 ALLCAPS<carets> 中展示,而可選參數需要單雙橫杠顯示,就像 --like。更多內容可以閱讀 Docopt 有關 patterns 的文檔。

 

Fire

Fire 是谷歌的一個命令行工具開發庫。尤其令人喜歡的是當你的命令需要更多復雜參數或者處理 Python 對象時,它會聰明地嘗試解析你的參數類型。

Fire 的 文檔 包括了海量的樣例,但是我希望這些文檔能被更好地組織。Fire 能夠處理 同一個文件中的多條命令、使用 對象 的方法作為命令和 分組 命令。

它的弱點在于輸出到控制臺的文檔。命令行中的 docstring 不會出現在幫助文本中,并且幫助文本也不一定標識出參數。

  1. import fire
  2.  
  3.  
  4. def say_hello(name=''):
  5. return 'Hello {}!'.format(name)
  6.  
  7.  
  8. if __name__ == '__main__':
  9. fire.Fire()

參數是必要還是可選取決于你是否在函數或者方法定義中為其指定了一個默認值。要調用命令,你必須指定文件名和函數名,比較類似 Click 的語法:

  1. $ python hello.py say_hello Rikki
  2. Hello Rikki!

你還可以像標記一樣傳參,比如 --name=Rikki

 

額外贈送:打包!

Click 包含了使用 setuptools 打包 命令行工具的使用說明(強烈推薦按照說明操作)。

要打包我們***個例子中的命令行工具,將以下內容加到你的 setup.py 文件里:

  1. from setuptools import setup
  2.  
  3. setup(
  4. name='hello',
  5. version='0.1',
  6. py_modules=['hello'],
  7. install_requires=[
  8. 'Click',
  9. ],
  10. entry_points='''
  11. [console_scripts]
  12. hello=hello:say_hello
  13. ''',
  14. )

任何你看見 hello 的地方,使用你自己的模塊名稱替換掉,但是要記得忽略 .py 后綴名。將 say_hello 替換成你的函數名稱。

然后,執行 pip install --editable 來使你的命令在命令行中可用。

現在你可以調用你的命令,就像這樣:

  1. $ hello --name='Jeff'
  2. Hello Jeff!

通過打包你的命令,你可以省掉在控制臺鍵入 python hello.py --name='Jeff' 這種額外的步驟以減少鍵盤敲擊。這些指令也很可能可在我們提到的其他庫中使用。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-02-27 09:24:48

命令行文件Linux

2020-02-12 13:00:09

網速度測試工具開源工具

2020-12-11 06:44:16

命令行工具開發

2020-12-10 16:16:08

工具代碼開發

2014-08-25 16:23:24

2018-05-04 09:15:35

PythonPlumbum命令行

2023-06-09 07:45:29

Kuberneteskubectl

2011-06-17 16:49:05

Cocoa蘋果

2015-07-30 11:04:08

Linux命令行工具

2015-07-30 11:24:47

Linux 系統命令行工具

2018-05-02 08:06:12

2015-07-29 10:34:50

Linux系統命令行工具

2014-02-18 10:45:48

2014-04-09 11:05:11

2020-03-30 12:57:50

Linux命令行Markdown

2010-08-24 09:10:14

Linux命令行工具

2018-04-25 08:25:01

Linux命令行密碼管理器

2015-06-16 10:36:45

Linux命令行

2010-11-24 17:12:17

MySQL命令行

2013-12-09 14:29:13

OpenStack命令行工具API
點贊
收藏

51CTO技術棧公眾號

日本在线观看免费| 久久久国产免费| 日本一区二区三区电影免费观看| 中文字幕一区二区在线播放| 99久久一区三区四区免费| 青草草在线视频| 日韩激情啪啪| 欧美老女人第四色| 欧美一级视频免费看| 猫咪在线永久网站| 国模少妇一区二区三区| 久久久综合免费视频| 90岁老太婆乱淫| 日本在线一区二区| 婷婷成人激情在线网| 日韩精品一区二区三区外面| 精品人妻av一区二区三区| 亚洲深夜影院| 久久精品国产欧美亚洲人人爽| 美女被爆操网站| 日韩伦理三区| 亚洲香肠在线观看| 日韩在线观看电影完整版高清免费| 国产又粗又猛又爽又黄视频 | 久久精品国产成人av| 青青草91久久久久久久久| 日韩精品一区二区三区视频在线观看 | 欧美一区二不卡视频| 青青草91视频| 91精品国产高清久久久久久久久| 羞羞在线观看视频| 亚洲精品3区| 精品国产a毛片| 欧美日韩理论片| 日韩av大片站长工具| 亚洲国产成人av网| 国产又粗又硬又长| 在线视频三区| 久久精品亚洲精品国产欧美| 99影视tv| 99国产精品久久久久久久成人 | 视频免费1区二区三区| 亚洲综合电影| 图片区日韩欧美亚洲| 免费看污污视频| 日本中文字幕伦在线观看| 久久婷婷综合激情| 激情小说综合网| 欧美一级在线免费观看| 国产成人自拍在线| 亚洲一区中文字幕| 国产精品视频第一页| 秋霞午夜鲁丝一区二区老狼| 欧洲永久精品大片ww免费漫画| 精品无码一区二区三区电影桃花 | 日韩亚洲成人av在线| 一级黄色片网址| 精品国产精品久久一区免费式| 精品视频在线播放免| 国产精品无码电影| 欧美精品密入口播放| 亚洲精品999| 亚洲一区二区乱码| 亚洲ab电影| 亚洲精品自拍第一页| 182在线视频| 亚州综合一区| 亚洲天堂2020| 国产传媒在线看| 欧美a级成人淫片免费看| 色诱女教师一区二区三区| 日本精品久久久久中文| 久久综合99| 另类视频在线观看| 九九热精彩视频| 影音先锋在线一区| 久久久免费精品| 亚洲天堂一区在线观看| 男人的天堂亚洲| 国产精品激情av电影在线观看| 中文字幕黄色av| 国产中文字幕一区| 国产精品久久九九| 青青青草网站免费视频在线观看| 国产拍欧美日韩视频二区| 色噜噜色狠狠狠狠狠综合色一| 爱久久·www| 国产精品久久久久久久裸模| 在线观看日韩羞羞视频| 污视频在线看网站| 精品福利免费观看| 人人干人人干人人| 97人人澡人人爽91综合色| 日韩精品极品在线观看播放免费视频| 免费毛片视频网站| 久久久久久久久久久久久久| 久久久久久久国产| 国产免费a视频| 国产精品羞羞答答xxdd| 精品久久久久久一区| 国产美女视频一区二区三区| 亚洲女与黑人做爰| 91视频最新入口| 亚洲一区二区av| 亚洲国产精品久久久久秋霞不卡| 国产jjizz一区二区三区视频| 一本一本久久a久久综合精品| 97涩涩爰在线观看亚洲| 伊人免费在线观看| eeuss影院一区二区三区| 亚洲午夜精品一区二区| 国产激情视频在线看| 欧美日本在线一区| 法国伦理少妇愉情| 欧美成人tv| 国产精品福利在线观看| 欧美一级片免费| 日韩毛片高清在线播放| 黄色一级片播放| 欧美一区一区| 国产一区二区三区视频在线观看 | avtt亚洲| 欧美日韩在线一区| 无码人妻aⅴ一区二区三区玉蒲团| 精品久久久亚洲| 亚洲91精品在线| a毛片在线免费观看| 久久久精品综合| 久久久久久免费看| 欧美日韩国产一区二区在线观看| 国产亚洲精品久久久久久777| 亚洲黄色一区二区| 国产精品99久久久久久有的能看| 亚洲国产一区二区精品视频| 日产福利视频在线观看| 精品久久久久av影院 | 天天av天天翘天天综合网色鬼国产| 亚洲欧美日本一区二区三区| 国产一区二区三区四区五区| 91成人天堂久久成人| 亚洲免费黄色片| 亚洲日本va在线观看| 天天干天天玩天天操| 精品国产乱码久久久| 日本精品久久久久影院| 天堂а√在线8种子蜜桃视频| 亚洲综合区在线| 在线观看一区二区三区视频| 亚州av乱码久久精品蜜桃| 国产综合香蕉五月婷在线| 岛国在线大片| 欧美色精品在线视频| 中字幕一区二区三区乱码| 久久综合图片| 日韩欧美三级一区二区| 成人日韩精品| 在线观看欧美日韩| 中文字幕一区二区三区免费看| 国产网站一区二区三区| 日本久久久久久久久久久久| 精品国产一区二区三区小蝌蚪 | 暴力调教一区二区三区| 成年人午夜视频在线观看| 激情小说亚洲色图| 97在线免费视频| 四虎影视精品成人| 色综合久久久久综合体 | 中文字幕亚洲电影| 亚洲精品中文字幕乱码无线| 中文字幕亚洲综合久久五月天色无吗''| 国产中文字幕亚洲| 欧美黑人猛交| 日韩成人免费视频| 五月天婷婷导航| 国产精品美女久久久久久久 | 亚洲男人的天堂在线视频| 99国产精品国产精品毛片| 男人靠女人免费视频网站| 奇米色欧美一区二区三区| 国产美女精品视频| 97caopron在线视频| 精品国产乱码久久久久久蜜臀| 欧美日韩综合在线观看| 国产日韩欧美一区二区三区乱码| 亚洲国产成人va在线观看麻豆| 欧美 日韩 国产 一区| 国精产品一区二区| 亚洲mmav| 九色精品免费永久在线| 午夜在线视频观看| 欧美日韩中文字幕一区二区| 欧美人与禽zozzo禽性配| 26uuu欧美日本| 婷婷激情5月天| 亚洲久久成人| 亚洲一卡二卡| 粉嫩一区二区三区四区公司1| 国产成人av在线| 黄在线免费观看| 日韩电视剧免费观看网站| 中文字幕人妻一区二区在线视频| 亚洲综合成人在线视频| 日韩毛片无码永久免费看| 国产精品99久久久| 亚洲三级视频网站| 亚洲天堂成人| 亚洲一区精品视频| 免费萌白酱国产一区二区三区| 国产精品一二三视频| 91超碰在线播放| 久久久av一区| 欧美少妇另类| 精品99一区二区三区| 中文字幕永久在线视频| 亚洲v中文字幕| 午夜精品一区二区三级视频| 久久久精品2019中文字幕之3| 三级网站免费看| 免费成人性网站| 啊啊啊一区二区| 在线日韩视频| 法国空姐在线观看免费| 国产在线日韩精品| 黑人另类av| 中文字幕一区图| 国产在线一区二区三区| 希岛爱理一区二区三区av高清| 欧美精品在线看| 天天综合视频在线观看| 亚洲色图五月天| 亚洲aⅴ乱码精品成人区| 日韩欧美高清dvd碟片| 国产在成人精品线拍偷自揄拍| 色诱视频网站一区| 天堂在线免费观看视频| 亚洲黄色av一区| 国产高潮流白浆| 国产精品久久三| 午夜精产品一区二区在线观看的| 91视频www| 国产网站无遮挡| av不卡一区二区三区| 精品少妇人妻av一区二区三区| 国产精品小仙女| 黄页网站在线看| 国产美女娇喘av呻吟久久| 国产成人美女视频| 另类成人小视频在线| 人人干人人视频| 日韩精品一级二级 | 狠狠狠色丁香婷婷综合激情| 久久久精品麻豆| 日本免费新一区视频| 国产视频一区二区三区在线播放| 翔田千里一区二区| 激情网站五月天| 久久一区激情| 天天干天天综合| 另类人妖一区二区av| 天堂av8在线| 国产制服丝袜一区| 欧美做受高潮中文字幕| 成人教育av在线| 网站免费在线观看| 久久精品视频一区二区| 国产又黄又粗的视频| 国产精品你懂的在线欣赏| 极品色av影院| 一区二区日韩电影| 日本系列第一页| 欧美日韩在线第一页| 日韩中文字幕高清| 欧美精品在线观看一区二区| 国产乱淫a∨片免费视频| 91精品婷婷国产综合久久性色| 不卡视频免费在线观看| 日韩高清免费观看| 91.xxx.高清在线| 美女福利视频一区| 18aaaa精品欧美大片h| 欧美一区第一页| 农村妇女一区二区| 操一操视频一区| 亚州精品视频| 一区在线电影| 91久久午夜| 黄色一级二级三级| 国产剧情一区二区三区| 亚洲av成人无码一二三在线观看| 国产性色一区二区| 欧美三级 欧美一级| 欧美日韩在线视频首页| 中文字幕欧美色图| 亚洲风情亚aⅴ在线发布| 国产最新视频在线| 久久91亚洲精品中文字幕| 欧美巨大丰满猛性社交| 国产精品永久免费在线| 8x国产一区二区三区精品推荐| 欧美高清视频一区二区三区在线观看| 色综合咪咪久久网| 777av视频| 精品一区二区三区免费观看| 亚洲国产精品成人综合久久久| 国产精品高潮呻吟| 欧美亚韩一区二区三区| 欧美精品在线一区二区| 色视频在线看| 欧美尺度大的性做爰视频| 日本不卡一二三| 国产精品一码二码三码在线| 四虎成人av| 国内自拍视频一区| 成人网页在线观看| 久久久久久久久久97| 欧美午夜精品久久久久久人妖 | 国产在线精品免费av| 性欧美丰满熟妇xxxx性仙踪林| 亚洲欧美日韩人成在线播放| aaa在线视频| 亚洲国产精品久久精品怡红院 | 亚洲色图清纯唯美| 国产一级片av| 日韩精品在线播放| 国内小视频在线看| 91亚洲精品久久久| 日本在线电影一区二区三区| 久久无码高潮喷水| 成人少妇影院yyyy| 18岁成人毛片| 8x8x8国产精品| 尤物在线视频| 国产精品久久久久久久午夜| 特黄特色欧美大片| 欧美视频在线观看网站| 成人免费视频免费观看| a级片在线观看免费| 在线综合亚洲欧美在线视频| 福利在线播放| 国产精品国产自产拍高清av水多| 自拍亚洲一区| 中国丰满人妻videoshd| 99热这里都是精品| 国产精品99无码一区二区| 日韩欧美在线不卡| 国产一二区在线| 91精品中国老女人| 欧美激情国产在线| 日韩av.com| 中文字幕一区二区不卡| 一区二区国产欧美| 中文字幕视频一区二区在线有码 | 亚洲久久久久久| 午夜私人影院久久久久| 日本精品久久久久久| 韩国v欧美v日本v亚洲| 大桥未久女教师av一区二区| 国产精品自拍合集| 成人h动漫精品一区二区| 国产在线拍揄自揄拍无码视频| 日韩欧美综合一区| 欧美人与性动交α欧美精品济南到 | www.99riav| 粉嫩av一区二区三区在线播放| 18精品爽视频在线观看| 精品播放一区二区| 小h片在线观看| 日韩av在线一区二区三区| 男女男精品网站| a一级免费视频| 日韩免费高清视频| 亚洲妇女成熟| 五月天婷亚洲天综合网鲁鲁鲁| 蜜桃一区二区三区四区| 18岁成人毛片| 精品一区二区三区电影| 国产精成人品2018| 熟妇熟女乱妇乱女网站| 高清日韩电视剧大全免费| 国产精品国产三级国产专区52 | caopeng在线| 国产一区再线| 日本色综合中文字幕| 国产一二三区精品| 亚洲成人亚洲激情| 99re66热这里只有精品4| 日韩视频 中文字幕| 成人成人成人在线视频| 成年人视频免费| 欧美高清电影在线看| 自拍偷拍欧美一区| 99999精品| 日本精品免费观看高清观看| av毛片在线免费| 欧美福利精品| 丁香六月久久综合狠狠色| 国产精品午夜一区二区| 欧美激情三级免费| 日本道不卡免费一区| 精品国产乱码久久久久夜深人妻|