亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python庫docopt命令行參數(shù)解析工具

 更新時間:2024年01月17日 11:10:01   作者:曉飛的李 管窺程序  
這篇文章主要介紹了Python庫docopt命令行參數(shù)解析工具,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

什么是 docopt

你正在為你的 Python 項目編寫一個命令行接口??赡苁且粋€數(shù)據(jù)處理工具,也可能是游戲的啟動器,又或者是部署腳本。

你希望用戶能通過簡明的參數(shù)和選項來控制程序的行為。比如,用戶可以通過 --help 選項來查看幫助信息,通過 -v 來獲取版本信息,或者通過 --input=file.txt 來指定輸入文件。

你可能已經(jīng)試過如何實現(xiàn)了,然后令人沮喪地發(fā)現(xiàn),解析復雜的命令行參數(shù)是一項乏味且容易出錯的工作。

正當你在代碼中苦苦掙扎時,docopt 悄悄地向你招手,幫你輕松構建一個強大、直觀且易于維護的命令行程序

docopt不是那些典型的參數(shù)解析庫,它基于一個簡單的前提:如果你可以寫出一個良好的幫助信息,那么你已經(jīng)定義了程序的界面。簡單地說,docopt允許你直接將幫助文檔字符串作為定義參數(shù)的界面。它幫助你定義一個接口規(guī)范,并且能夠自動解析與這個規(guī)范相符的命令行參數(shù)。

開發(fā)者 Vladimir Keleshev 在2012 年推出了 docopt,并開源在 GitHub 上。隨后,有越來越多的開發(fā)者參與到這個項目中,使其成為最受歡迎的 Python 命令行解析工具之一。docopt 簡化了命令行處理流程,將我們從繁瑣的參數(shù)解析代碼中解放出來。

與它類似的庫有 argparse 和click,但 docopt 的獨特之處在于它的聲明式界面設計。你直接寫出命令行應該如何被調(diào)用的文檔,然后 docopt 為你解析出所有的選項和參數(shù)。這種接口設計方法是直觀且易于記憶的,減少了學習成本,讓開發(fā)者可以更專注于其他更重要的工作。

安裝

安裝 docopt 十分簡單,只需要一行 pip 命令:

pip install docopt

命令行參數(shù)格式化

要理解 docopt 的運用方法,我們首先要理解命令行參數(shù)的結構。

docopt 的一個重要概念是形式語法(格式),它允許使用下述的幾種模式:

  • 尖括號 <like_this> 用于參數(shù),這些是必須由用戶提供的值。

  • 方括號 [like_this] 用于可選的元素。

  • 大括號 {like_this} 基本上不使用,但你可以用它們來構成自己的語法標記。

  • 圓括號 (like_this) 用于表示一組選項中必須選擇一個。

  • 管道符 | 用于分割可供選擇的各個選項。

  • 雙破折號 --like_this 通常用于長選項式樣的命令行選項。

  • 單破折號 -l 通常用于單字母的命令行選項。

  • 點點點 ... 表示可以重復的元素。

通過以上這些格式標記,你可以創(chuàng)建幾乎任何你需要的命令行界面。

下面我們看看,如何定義和解析參數(shù)。

解析命令行參數(shù)

首先,定義一個簡單的幫助文檔作為字符串,這也將是我們程序的命令行接口規(guī)范。

例子如下:

"""Naval Fate.

Usage:
  naval_fate.py ship new <name>...
  naval_fate.py ship <name> move <x> <y> [--speed=<kn>]
  naval_fate.py ship shoot <x> <y>
  naval_fate.py mine (set|remove) <x> <y> [--moored|--drifting]
  naval_fate.py (-h | --help)
  naval_fate.py --version

Options:
  -h --help     Show this screen.
  --version     Show version.
  --speed=<kn>  Speed in knots [default: 10].
  --moored      Moored (anchored) mine.
  --drifting    Drifting mine.
"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__, version='Naval Fate 2.0')
    print(arguments)

當你運行這個腳本時,你可以像下面這樣輸入命令行參數(shù):

python naval_fate.py ship new "Black Pearl" "Flying Dutchman"

你會看到程序輸出了解析后的參數(shù),例如:

{"ship": true,
 "new": true,
 "<name>": ["Black Pearl", "Flying Dutchman"],
 "move": false, ...}

每個命令行選項和參數(shù)都會得到一個字典條目。值為 true 或false 代表布爾型選項,其他如 <name> 和--speed 則包含傳遞的值或默認值。

子命令

docopt 非常適用于設計具有子命令的 CLI 程序,比如 git 那樣有許多子命令的程序。

示例:

"""Git.
Usage:
  git.py add <file>...
  git.py commit <message>
  git.py push <remote> <branch>
"""
arguments = docopt(__doc__)

如果某個用戶嘗試執(zhí)行以下命令:

python git.py commit "Initial commit"

解析后的參數(shù)將是:

{"add": false,
 "commit": true,
 "<message>": "Initial commit",
 "push": false, ...}

在你的程序中,你可以根據(jù)這些參數(shù)執(zhí)行相應的邏輯,如提交代碼、添加文件等。

其他功能

docopt 甚至支持更高級的模式匹配,比如選擇(one-of)、可選項 (optional)、重復項和可能的細分(arguments, commands, options, ...)。比如,(set|remove) 意味著這是一個選擇模式,必須匹配 set 或remove。

詳細信息請參考項目說明:https://github.com/docopt/docopt,限于篇幅,這里就不展開了。

實踐

現(xiàn)在你已經(jīng)了解了 docopt 的基礎知識,讓我們來點互動性的練習吧:

  • 嘗試編寫一個幫助文檔字符串,用于一個簡單的文件復制工具,該工具接受源文件和目標文件的路徑作為參數(shù)。

  • 增加一個可選的 --verbose 選項,當用戶希望工具提供更多的執(zhí)行詳情時可以使用這個選項。

  • 實現(xiàn)源文件路徑可以是單個文件也可以是多個文件(使用 ...)。

  • 為工具添加一個版本號 1.0.0 并支持 --version 選項。

練習程度從易到難,希望通過這些練習,你能更好地理解并應用 docopt。記得,練習時可以參考 docopt 的官方文檔,以獲取更多靈感和解決方案。

總結

在我們的 Python 編程旅程中,docopt 是一個強大而靈活的工具,它使命令行參數(shù)的處理簡潔而優(yōu)雅。通過直接解析幫助信息來確定命令行參數(shù),我們可以更快地創(chuàng)建一個用戶友好的命令行界面,這樣不僅節(jié)省了我們寶貴的時間,也為最終用戶提供了更佳的體驗。而當你的項目成長,命令行界面變得日益龐大時,docopt 的簡明性和可維護性尤為寶貴。

隨著你繼續(xù)探索 Python 的深處,希望你能善用 docopt,讓它成為你工具箱中的瑰寶。讓編程像藝術一樣流暢而富有創(chuàng)意。

以上就是Python庫docopt命令行參數(shù)解析工具的詳細內(nèi)容,更多關于Python docopt庫的資料請關注腳本之家其它相關文章!

相關文章

  • TensorFlow可視化工具TensorBoard默認圖與自定義圖

    TensorFlow可視化工具TensorBoard默認圖與自定義圖

    這篇文章主要介紹了TensorFlow可視化工具TensorBoard默認圖與自定義圖的使用操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 機器學習10大經(jīng)典算法詳解

    機器學習10大經(jīng)典算法詳解

    這篇文章主要為大家詳細介紹了機器學習10大經(jīng)典算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • ChatGPT 幫我自動編寫 Python 爬蟲腳本的詳細過程

    ChatGPT 幫我自動編寫 Python 爬蟲腳本的詳細過程

    ChatGPT是一種基于大語言模型的生成式AI,換句話說它可以自動生成類似人類語言的文本,把梳理好的有邏輯的答案呈現(xiàn)在你面前,這完全不同于傳統(tǒng)搜索工具,這篇文章主要介紹了ChatGPT 幫我自動編寫 Python 爬蟲腳本,需要的朋友可以參考下
    2023-02-02
  • 簡單且有用的Python數(shù)據(jù)分析和機器學習代碼

    簡單且有用的Python數(shù)據(jù)分析和機器學習代碼

    Python編程是一種通用的編程語言,開源、靈活、功能強大且易于使用,python最重要的特性之一是其用于數(shù)據(jù)處理和分析任務的豐富實用程序和庫集,這篇文章主要給大家介紹了一些簡單且有用的Python數(shù)據(jù)分析和機器學習代碼,需要的朋友可以參考下
    2021-07-07
  • python3實現(xiàn)TCP協(xié)議的簡單服務器和客戶端案例(分享)

    python3實現(xiàn)TCP協(xié)議的簡單服務器和客戶端案例(分享)

    下面小編就為大家?guī)硪黄猵ython3實現(xiàn)TCP協(xié)議的簡單服務器和客戶端案例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 淺析Python中的隨機采樣和概率分布

    淺析Python中的隨機采樣和概率分布

    Python中包含了很多概率算法,包括基礎的隨機采樣以及許多經(jīng)典的概率分布生成。本文主要介紹了我們在機器學習中常用的概率函數(shù)。感興趣的同學可以了解一下
    2021-12-12
  • Python Dataframe 指定多列去重、求差集的方法

    Python Dataframe 指定多列去重、求差集的方法

    今天小編就為大家分享一篇Python Dataframe 指定多列去重、求差集的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Django定時任務Django-crontab的使用詳解

    Django定時任務Django-crontab的使用詳解

    測試平臺執(zhí)行測試用例時,可以借助jenkins之類的CI/CD工具,也可以使用定時任務crontab,作為測試開發(fā)工程師,我們可能沒有權限去操作服務器,那么我們就只能使用django-crontab,在指定時間循環(huán)執(zhí)行測試用例,對定時任務Django-crontab的使用感興趣的朋友一起看看吧
    2022-07-07
  • Python Pytest裝飾器@pytest.mark.parametrize詳解

    Python Pytest裝飾器@pytest.mark.parametrize詳解

    本文主要介紹了Python Pytest裝飾器@pytest.mark.parametrize詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解Python+Turtle繪制奧運標志的實現(xiàn)

    詳解Python+Turtle繪制奧運標志的實現(xiàn)

    turtle庫是Python標準庫之一,是入門級的圖形繪制函數(shù)庫。本文就將利用turtle庫繪制一個奧運標志—奧運五環(huán),感興趣的可以學習一下
    2022-02-02

最新評論