欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python開發(fā)簡單的命令行工具簡介

 更新時間:2023年02月01日 08:37:55   作者:Feyncode  
這篇文章主要介紹了python開發(fā)簡單的命令行工具實例的相關(guān)資料,需要的朋友可以參考下

介紹

Python模塊argparse,這是一個命令行選項,參數(shù)和子命令的解釋器,使用該模塊可以編寫友好的命令行工具,在程序中定義好需要的參數(shù),argparse將弄清楚如何解析 sys.argv中的參數(shù)。argparse模塊還支持自動生成幫助和用法信息,當模塊解析到無效參數(shù)時,還可以發(fā)出錯誤。

python標準庫sys模塊

sys.agv				#命令行參數(shù)List,第一個元素時程序本身路徑
sys.exit(n)		#退出程序,正常退出時exit(0)
sys.version 	#獲取Python解釋程序的版本信息
sys.maxint 		#最大的Int值
sys.path			#返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值
sys.stdin			#輸入線管
sys.stdout		#輸出相關(guān)
sys.stderror	#錯誤相關(guān)

命令行工具

我們使用過很多的命令行工具,那么python開發(fā)出的命令行工具,能列舉出哪些呢?
其實python本身就是一個命令行工具,在cmd中使用python --help,能輸出python的幫助語句,這就是命令行工具解析參數(shù)后輸出的一個例子。
再有,pip 也是一個典型的例子,在使用pip時,不同的子命令可以達成不同的效果。
當然知道和做到相距實在太過遙遠,我也很難寫出一個python或pip。

概念

argparse是一個較大的模塊,提供了很多功能,它的文檔相當詳細和完整,包含大量示例。所以學習該模塊最好的教程就是官方文檔,argparse( https://docs.python.org/zh-cn/3/library/argparse.html),那么為什么我沒去看呢,一方面是我并不需要復(fù)雜的功能,另一方面我的英語閱讀能力不足以讓我完全理解該文檔。我們必須承認,英語水平分開了普通的技術(shù)人員,因此我正在努力提升英語水平。
在開發(fā)一個命令行工具前,我們首先需要知道一個命令行工具包含了哪些內(nèi)容,它又是怎么識別我們提供的參數(shù)的,識別后又是怎么提供輸出的,對待錯誤的選項,它又是如何調(diào)整的。
因此,官網(wǎng)使用了 ‘ls’ 這個命令來介紹命令行工具的幾個概念:

  • ls 是一個即使在運行的時候沒有提供任何選項,也非常有用的命令。在默認情況下他會輸出當前文件夾包括的內(nèi)容。
  • 如果我們想要使用比它默認提供的更多功能,我們需要告訴該命令更多信息。我們可以指定所謂的位置參數(shù),之所以這樣命名,是因為程序應(yīng)該如何處理該參數(shù)值,完全取決于它在命令行出現(xiàn)的文職。更能體現(xiàn)這個概念的命令如 cp ,它最基本的用法是 cp SRC DEST,第一個位置參數(shù)指的是你想要復(fù)制的,第二個位置參數(shù)指的是你想要復(fù)制到的位置。
  • 現(xiàn)在假設(shè)我們想要改變這個程序的行為。使用 **ls -l ,**我們可以輸出更多的信息,在這個例子中,-l 被稱為可選參數(shù)。
  • **–help **通常被用來輸出幫助文檔,它是非常有用的,因為當你遇到一個你從未使用過的程序時,你可以通過閱讀它的幫助文檔來弄清楚它是如何運行的。

了解了這些,我們通過幾個例子可以更好的說明這個模塊是如何解析從命令行獲取的參數(shù)的,并且解析出的參數(shù)又是如何被程序使用的。

基礎(chǔ)

命令行參數(shù)解析很容易,但是它也可以被加入很多參數(shù),注入很多定義,這讓最后的程序變得不堪入目,為了防止我的朋友,也就是你,在開始就頭痛,我首先帶來一個我認為最簡單的案例。

示例

所有解析都應(yīng)當配有示例,并展示對比來說明程序的行為有哪些改變。

argparse使用主要有四個步驟:

  • 導入argparse包
  • 創(chuàng)建 ArgumentParser() 參數(shù)對象
  • 調(diào)用 add_argument() 方法往參數(shù)對象中添加參數(shù)
  • 使用 parse_args() 解析添加參數(shù)的參數(shù)對象,獲得解析對象
  • 程序其他部分,當需要使用命令行參數(shù)時,使用解析對象.參數(shù)獲取

在未使用argparse模塊前,我編寫了這樣一個python文件。

print("hello world!")

我們很熟悉這個案例,毫無疑問我們清楚python運行該文件時會得到什么樣的輸出,當我們在終端運行這個python文件demo1時,我們會使用以下命令。

$ python demo1.py
hello world!

是的,我們看到在命令行中,運行該文件輸出了我們想要的結(jié)果,一般情況下,我們需要python文件輸出某個值時,要么我們將該值在文件中寫死,就像上面這個例子一樣,我們已經(jīng)在文件中將想要的輸出寫死在文件中,這個值在未被輸出時就已經(jīng)在程序中被決定。如果我們需要用戶在終端中向程序提供某些值,來改變程序的行為,得到不同的輸出,我們常用的手段是使用input,讓程序讀入終端的輸入來達到這樣的效果。不過這樣做仍然需要手動的輸入,如果是自動化程序,那么可以使用參數(shù)直接帶入需要的變量將大大減少這樣的交互。
接下來我將演示如何使用argparse來完成一個簡單的參數(shù)解析。

import argparse #導入argparse包

parse = argparse.ArgumentParser() #創(chuàng)建參數(shù)對象
parse.add_argument('hello') #向參數(shù)對象中添加參數(shù)
args = parse.parse_args() #解析參數(shù)對象獲得解析對象
if __name__ == '__main__':
   print(args.hello)

讓我們來運行一下這個程序

$ python demo1.py helloworld
helloworld

很簡單,這是一個容易的例子,需要注意的是,由于沒有指定,所以命令行參數(shù)輸入默認按順序復(fù)制,順序不同的話得到的結(jié)果將不同。
接下來我將帶入一些官網(wǎng)上的案例,來繼續(xù)解釋argparse的一些進階示例。

使用介紹

  • –help 選項,也可縮寫為 -h,是唯一一個可以直接使用的選項(即不需要指定該選項的內(nèi)容)。指定任何內(nèi)容都會導致錯誤。即便如此,我們也能直接得到一條有用的用法信息。

add_argument()方法,定義如何解析命令行參數(shù),對于該方法,參數(shù)解釋如下:

  • name or flags - 選項字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到參數(shù)時的動作,默認值是 store。
    • store_const,表示賦值為const;
  • – append,將遇到的值存儲成列表,也就是如果參數(shù)重復(fù)則會保存多個值;
  • – append_const,將參數(shù)規(guī)范中定義的一個值保存到一個列表;
  • – count,存儲遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;
  • nargs - 應(yīng)該讀取的命令行參數(shù)個數(shù),可以是
  • 具體的數(shù)字,或者是?號,當不指定值時對于 Positional argument 使用 default,對于 Optional argument 使用 const
  • 或者是 * 號,表示 0 或多個參數(shù);
  • 或者是 + 號表示 1 或多個參數(shù)。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定參數(shù)時的默認值。
  • type - 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。
  • choices - 參數(shù)可允許的值的一個容器。
  • required - 可選參數(shù)是否可以省略 (僅針對可選參數(shù))。
  • help - 參數(shù)的幫助信息,當指定為 argparse.SUPPRESS 時表示不顯示該參數(shù)的幫助信息.
  • metavar - 在 usage 說明中的參數(shù)名稱,對于必選參數(shù)默認就是參數(shù)名稱,對于可選參數(shù)默認是全大寫的參數(shù)名稱.
  • dest - 解析后的參數(shù)名稱,默認情況下,對于可選參數(shù)選取最長的名稱,中劃線轉(zhuǎn)換為下劃線.

可選參數(shù)設(shè)置

通過在參數(shù)名前加 --, 設(shè)置為可選參數(shù),如果未輸入,則使用default默認值,若為設(shè)置default則默認賦值 None

parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')

引用名,可以縮短參數(shù)名,簡化命令行參數(shù)輸入;也就是使用-n或者-name可以獲得一樣的效果

必選參數(shù)設(shè)置

需要一個必選參數(shù)時,則設(shè)置required=True,這時,無論參數(shù)是否時可選參數(shù),都必須輸入

列表參數(shù)傳入設(shè)置

添加narg='+' 這樣可以在命令行中添加若干個參數(shù),傳入后將被添加到列表中。

互斥參數(shù)

也就是add_mutually_exclusive_group方法,這讓我們可以添加兩個互相排斥的參數(shù),也就是只能選擇其中一個參數(shù)添加

默認參數(shù)設(shè)置

set_defaults()可以設(shè)置一些參數(shù)的默認值

到此這篇關(guān)于python開發(fā)簡單的命令行工具簡介的文章就介紹到這了,更多相關(guān)python開發(fā)簡單的命令行工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 超詳細的Python安裝第三方庫常用方法匯總

    超詳細的Python安裝第三方庫常用方法匯總

    電腦網(wǎng)絡(luò)有點問題,直接安裝第三方庫的時候出現(xiàn)了各種問題,所以在這篇文章里記錄一下各種安裝第三方庫的方法吧,下面這篇文章主要給大家介紹了關(guān)于Python安裝第三方庫常用方法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python判斷元素是否存在的實例方法

    python判斷元素是否存在的實例方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python判斷元素是否存在的實例方法,有需要的朋友們可以學習參考下。
    2020-09-09
  • Python中的異常處理相關(guān)語句基礎(chǔ)學習筆記

    Python中的異常處理相關(guān)語句基礎(chǔ)學習筆記

    這里我們簡單整理一下Python中的異常處理相關(guān)語句基礎(chǔ)學習筆記,包括try...except與assert等基本語句的用法講解:
    2016-07-07
  • Python實現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼實例

    Python實現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼實例

    在本篇文章里小編給大家整理的是關(guān)于Python實現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼內(nèi)容,有興趣的朋友們可以學習下。
    2020-02-02
  • python 如何快速復(fù)制序列

    python 如何快速復(fù)制序列

    這篇文章主要介紹了python 如何快速復(fù)制序列,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-09-09
  • 利用Anaconda完美解決Python 2與python 3的共存問題

    利用Anaconda完美解決Python 2與python 3的共存問題

    Anaconda 是 Python 的一個發(fā)行版,如果把 Python 比作 Linux,那么 Anancoda 就是 CentOS 或者 Ubuntu,下面這篇文章主要給大家介紹了利用Anaconda完美解決Python 2與python 3共存問題的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒。
    2017-05-05
  • python通過Seq2Seq實現(xiàn)閑聊機器人

    python通過Seq2Seq實現(xiàn)閑聊機器人

    這篇文章主要介紹了python通過Seq2Seq實現(xiàn)閑聊機器人,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用Python給頭像加上圣誕帽或圣誕老人小圖標附源碼

    使用Python給頭像加上圣誕帽或圣誕老人小圖標附源碼

    圣誕的到來給大家?guī)硐矏?,今天圣誕老人給大家送一頂圣誕帽,今天小編通過代碼給大家分享使用Python給頭像加上圣誕帽或圣誕老人小圖標附源碼,需要的朋友一起看看吧
    2019-12-12
  • PyCharm 專業(yè)版安裝圖文教程

    PyCharm 專業(yè)版安裝圖文教程

    這篇文章主要介紹了PyCharm 專業(yè)版安裝圖文教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Django使用jinja2模板的實現(xiàn)

    Django使用jinja2模板的實現(xiàn)

    本文主要介紹了Django使用jinja2模板的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論