精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

秋霞成人午夜鲁丝一区二区三区| 欧美一区二区三区公司| 欧美一区二区三区在线免费观看| 91丝袜一区二区三区| 不卡av一区二区| 欧美一区二区在线不卡| 青青草国产精品视频| 国产51人人成人人人人爽色哟哟| 黄色日韩网站视频| 97视频在线观看视频免费视频| 亚洲精品国产91| 久久九九精品视频| 一本久道久久综合中文字幕| 一区二区三区视频在线播放| 免费国产羞羞网站视频| 丝袜美腿亚洲一区二区图片| 不卡中文字幕av| 青青草成人免费视频| 伊人久久大香伊蕉在人线观看热v| 亚洲午夜视频在线| 一区二区精品在线观看| 三级网站在线看| 久久99最新地址| 欧美亚洲视频在线看网址| 五月婷婷综合激情网| 欧美中文一区| 日韩欧美一区二区在线视频| 久久精品视频91| av成人福利| 中文字幕人成不卡一区| 久久久影院一区二区三区| www.国产麻豆| 久久丁香综合五月国产三级网站 | 97久久精品午夜一区二区| 久久亚洲精品国产| 国产精品分类| 久久久精品影院| www.4hu95.com四虎| 小嫩嫩12欧美| 亚洲大胆人体视频| 美女被艹视频网站| 在线观看欧美| 欧美日韩高清一区二区不卡 | 九色porny丨国产精品| 欧美在线视频免费| 黄网在线观看视频| 欧美+亚洲+精品+三区| 啊v视频在线一区二区三区 | 五月婷婷色综合| 青青在线视频免费观看| 在线观看三级视频| 亚洲欧美电影院| 欧美另类videos| 国产视频在线播放| 成人免费在线播放视频| 一区精品在线| 麻豆视频在线观看免费网站| 国产精品久久久久精k8| 亚洲欧美日韩国产成人综合一二三区| 国产在线视频网| 日本一区二区三区久久久久久久久不 | 国产亚洲一区二区三区在线观看| 久久综合给合久久狠狠色| 色欲久久久天天天综合网| 波波电影院一区二区三区| 国产亚洲精品美女久久久m| 欧洲精品久久一区二区| www.欧美亚洲| 蜜桃麻豆www久久国产精品| 久久视频www| 国产日产欧美一区二区三区| 亚洲免费久久| 91最新在线视频| 亚洲高清视频中文字幕| 黄色动漫在线免费看| 欧美日韩成人影院| 91精品久久久久久久99蜜桃 | 欧美成人sm免费视频| 1024手机在线视频| 99热这里只有精品8| 日本人成精品视频在线| 亚洲中文字幕在线观看| 国产一区二区三区免费看| 成人欧美一区二区三区视频xxx| av中文字幕在线免费观看| 成人精品在线视频观看| 欧美日韩一区二| 欧美日本高清| 亚洲.国产.中文慕字在线| 成人性生生活性生交12| 精品国产一级| 日韩电影中文字幕在线观看| 免费黄色片网站| 欧美私人啪啪vps| 国产97在线观看| 国产黄色一级大片| 久久色视频免费观看| 中文字幕中文字幕在线中一区高清 | 亚洲国产日韩在线观看| 久久久精品影视| 国风产精品一区二区| 345成人影院| 91精品在线观看入口| 粉嫩av懂色av蜜臀av分享| 久久国产亚洲| 欧美在线www| 国产同性人妖ts口直男| 久久精品亚洲乱码伦伦中文| 天天综合五月天| 粉嫩一区二区| 精品久久久久久综合日本欧美 | 无码精品人妻一区二区三区影院| 欧美激情中文字幕一区二区| 人妻无码久久一区二区三区免费| 精品成人免费一区二区在线播放| 欧美成人bangbros| 国产精品白丝喷水在线观看| 视频一区免费在线观看| 国产精品三区四区| 黄色在线观看网站| 在线视频亚洲一区| 伊人网综合视频| 综合久久久久| 国产日韩欧美日韩| 精彩国产在线| 狠狠躁夜夜躁人人爽天天天天97| 日韩精品在线播放视频| 欧美a级成人淫片免费看| 欧洲精品在线视频| 欧性猛交ⅹxxx乱大交| 亚洲精品日产精品乱码不卡| 视频二区在线播放| 狠狠色丁香婷婷综合影院| 91av在线播放视频| 四虎永久在线精品免费网址| 曰韩精品一区二区| 亚洲五月激情网| 五月天激情综合网| 国产日韩欧美日韩大片| a天堂中文在线88| 在线影院国内精品| 无码人妻aⅴ一区二区三区69岛| 99精品国产在热久久| 国产在线精品一区二区三区| 欧美人与性动交α欧美精品济南到 | 国产三级精品三级在线观看国产| 久久国产精品久久久| 国产精品自偷自拍| 亚洲啪啪综合av一区二区三区| 国产三级国产精品国产专区50| 久久综合亚洲| 国产精品18久久久久久首页狼| 亚洲人午夜射精精品日韩| 图片区小说区区亚洲影院| 国产老熟女伦老熟妇露脸| 亚洲日本欧美| 久久亚洲免费| 美脚恋feet久草欧美| 亚洲午夜精品久久久久久久久久久久| 99久久精品国产亚洲| 2020国产精品自拍| 少妇激情一区二区三区| 欧美在线色图| 91久久精品国产91久久| 羞羞电影在线观看www| 欧美va亚洲va在线观看蝴蝶网| 精品无码久久久久久久| 99久精品国产| 亚洲色图38p| 国产精品成久久久久| av一区二区三区在线观看| 国产在线xxx| 国产视频一区在线| 中文字幕一区二区在线视频| 亚洲女女做受ⅹxx高潮| 一边摸一边做爽的视频17国产 | 国产精品99久久| 懂色一区二区三区av片| 欧美男男激情videos| 国产一区二区黄| 精品国产无码AV| 欧美视频一区二区三区…| 久久免费手机视频| 国产高清精品网站| 久久婷婷国产精品| 亚洲欧美在线专区| 精品国产乱码久久久久软件| 美女网站视频一区| 欧美尺度大的性做爰视频| 西西人体44www大胆无码| 欧美色网一区二区| 久久精品美女视频| 国产欧美视频在线观看| 欧美一级大片免费看| 视频在线观看一区| 欧美中日韩在线| 欧美一区二区三| 国产偷国产偷亚洲高清97cao| 日韩国产网站| 97在线视频一区| av免费网站在线| 亚洲色图国产精品| 亚洲精品911| 欧美日韩一级视频| 日韩精品在线免费视频| 国产精品高潮呻吟久久| 无遮挡aaaaa大片免费看| 国产乱子轮精品视频| 午夜视频在线瓜伦| 一区视频在线| 干日本少妇视频| 欧美伦理在线视频| 久久久久se| 亚洲一二三区视频| 川上优av一区二区线观看 | 91手机在线观看| 8av国产精品爽爽ⅴa在线观看| 久久久久在线观看| 国产1区在线| 在线播放精品一区二区三区 | 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩久久婷婷| 美女精品一区二区| 日日碰狠狠躁久久躁婷婷| 亚洲人成免费| 日韩xxxx视频| 亚洲视频中文| 天天干天天色天天爽| 国产精品不卡| 亚洲一区二区三区色| 欧美军人男男激情gay| 欧美久久久久久久| 一区二区小说| 久久亚裔精品欧美| 亚洲精品国模| 久久一区免费| 杨幂一区二区三区免费看视频| 国外成人在线视频网站| 精品国产亚洲一区二区在线观看 | 久久撸在线视频| 奇米一区二区三区| 欧美性猛交xxx乱久交| 奶水喷射视频一区| 欧美日韩激情视频在线观看| 一区二区动漫| 国产乱子夫妻xx黑人xyx真爽| 亚洲黄色精品| 欧美日韩一道本| 亚洲作爱视频| 免费在线观看的av网站| 久久婷婷av| 麻豆av免费在线| 日韩电影在线一区二区| 亚洲xxxx2d动漫1| 久久精品久久精品| 亚洲天堂网站在线| 国产成人综合视频| 污污内射在线观看一区二区少妇| 波多野结衣视频一区| 在线免费观看麻豆| 国产欧美日韩另类一区| 人与动物性xxxx| 亚洲免费三区一区二区| 伊人365影院| 欧美日韩在线视频一区| 91午夜精品亚洲一区二区三区| 欧洲一区二区三区免费视频| 亚洲在线视频播放| 欧美v亚洲v综合ⅴ国产v| 婷婷色在线视频| 亚洲午夜激情免费视频| 久草资源在线观看| 欧美激情亚洲自拍| 亚洲1234区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 国产国语videosex另类| 国产福利亚洲| 肥熟一91porny丨九色丨| 亚洲欧美成人vr| 三年中文高清在线观看第6集| 黄色日韩在线| 看欧美ab黄色大片视频免费| 国产一区免费电影| 久久久久久久久免费看无码| 国产精品三级在线观看| 麻豆亚洲av熟女国产一区二| 日韩欧美在线字幕| 国产精品系列视频| 亚洲国模精品私拍| 婷婷免费在线视频| 91禁外国网站| 欧美极品在线| 久久久精品动漫| 婷婷亚洲综合| 成人av一级片| 国产精品一区二区在线观看网站| xxxx日本免费| 亚洲伊人伊色伊影伊综合网| 久久亚洲精品石原莉奈| 日韩免费性生活视频播放| 成人性爱视频在线观看| 久久久久久高潮国产精品视| 成人深夜福利| 久久久久久九九九九| 一本一道久久a久久精品蜜桃| 无码人妻h动漫| 成人精品鲁一区一区二区| 99久久久无码国产精品不卡| 欧美日韩亚洲高清| 99国产精品久久久久久久成人| 亚洲人成在线电影| 成入视频在线观看| 99免费在线观看视频| 久久久综合色| 国产xxxxx视频| 91丝袜高跟美女视频| 国产一级片播放| 91麻豆精品国产91久久久资源速度| 青青草在线免费视频| 欧美精品video| 欧美第一在线视频| 一区二区国产日产| 蜜臀av亚洲一区中文字幕| 无码人妻精品一区二区中文| 亚洲成a人v欧美综合天堂下载 | 亚洲精品久久久久久久久久久久 | gogogo高清在线观看免费完整版| 热99精品里视频精品| 日本国产精品| 国产午夜大地久久| 成人av在线网站| 久久精品国产亚洲AV无码男同| 日韩欧美精品在线视频| 成人短视频在线观看| 成人夜晚看av| 99精品美女| 天堂视频免费看| 亚洲特级片在线| 99热这里只有精品99| 俺也去精品视频在线观看| 四虎永久精品在线| 一区二区三区久久网| 韩日av一区二区| 久久国产精品国语对白| 日韩手机在线导航| 色呦呦在线免费观看| 超碰97人人在线| 亚洲国产精品第一区二区三区| 人妻换人妻a片爽麻豆| 亚洲成人精品一区| 深夜影院在线观看| 茄子视频成人在线| 国产免费av一区二区三区| 成人在线激情网| 国产精品麻豆欧美日韩ww| 亚洲系列在线观看| 久久亚洲综合国产精品99麻豆精品福利| 91精品福利观看| 欧美极品少妇无套实战| 成人教育av在线| 在线观看 亚洲| 在线a欧美视频| 精品精品视频| 日本xxxxxxxxxx75| 久久精品欧美一区二区三区不卡| 最近中文字幕av| 欧美成人在线网站| 欧美美女黄色| 激情综合网俺也去| 亚洲视频香蕉人妖| 天天综合天天综合| 国产精品揄拍一区二区| 欧美日韩天堂| 三级黄色片网站| 欧美日韩一区三区| 免费在线看电影| 日本一区二区三不卡| 国产在线精品一区二区不卡了 | а√天堂中文资源在线bt| 日本午夜精品电影| 国产一区二区三区在线观看免费| 日本少妇激情舌吻| 中文字幕久久精品| 99亚洲乱人伦aⅴ精品| 国产美女三级视频| 亚洲欧洲三级电影| 天天干天天草天天射| 国产精品视频最多的网站| 亚洲一级一区| 香蕉久久久久久久| 亚洲成人精品视频| 精品亚洲a∨| 日韩在线一级片| 亚洲欧美一区二区三区国产精品| 午夜在线视频免费| 亚洲自拍欧美另类| 奇米在线7777在线精品| 久久久久久久久久久久国产| 一区二区三区视频观看| 国产福利一区二区精品秒拍|