0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何輕松使用Python寫出漂亮的命令行程序

電子工程師 ? 來源:未知 ? 作者:鄧佳佳 ? 2018-03-28 09:28 ? 次閱讀

誕生之初用來作為配置管理語言的Python,現(xiàn)在已經(jīng)成為最流行的編程語言之一,尤其是隨著AI應(yīng)用的興起,變得無處不在。


Python中的getopt,optparse模塊都可以進行命令行程序的開發(fā),不過它們已經(jīng)被廢棄,在2.7和3.2版本中引入了argparse模塊;這里介紹使用argparser模塊,只需要數(shù)十行代碼,就可以做出漂亮的命令行程序。

1.基本的命令行

看看官方文檔里的一個示例:

這幾行代碼實現(xiàn)的功能為:如果命令行輸入不帶--sum選項,則對輸入的多個整數(shù)執(zhí)行max操作;否則,執(zhí)行sum操作。例如:在命令行中執(zhí)行:python prog.py 1 2 3 4輸出為:4

在命令行中執(zhí)行:python prog.py 1 2 3 4 --sum輸出為:10

上面的代碼中,主要的過程分為三個步驟:

  • 調(diào)用argparse.ArgumentParser的構(gòu)造器創(chuàng)建一個ArgumentParser對象。

  • 調(diào)用ArgumentParser的add_argument()方法添加命令行的參數(shù),包括可選參數(shù)和必選參數(shù)。其中以--、 -開頭的表示可選參數(shù),其它的表示必須輸入的參數(shù)。

  • 調(diào)用parser.parse_args()方法對傳入的sys.argv參數(shù)進行解析。

2.實現(xiàn)子命令

有時候,我們可以根據(jù)功能將命令行分組成一系列相關(guān)的子命令。例如,Git命令行可以分為以下幾組:

在Python中,利用argparse模塊也可以很容易做出這樣的子命令行程序。

例如,我們要做一個對用戶信息進行管理的命令行程序,包括添加、刪除、查詢顯示等幾個功能。

我們可以根據(jù)功能將其分為三個子命令:add,delete,show。

相應(yīng)的代碼可以這樣寫:

對上面的代碼進行概要的解釋:ArgumentParser對象的add_subparsers()方法創(chuàng)建了一個特殊的action實例,對這個實例分別調(diào)用add_parser()方法來創(chuàng)建子命令對應(yīng)的ArgumentParser,再調(diào)用這個ArgumentParser實例的add_argument()方法來添加子命令的參數(shù)。一個比較方便的地方在于,可以通過ArgumentParser的set_defaults()方法來設(shè)置子命令對應(yīng)的處理函數(shù)。上面的示例中,分別為三個子命令設(shè)置了處理函數(shù):add_fn,delete_fn,show_fn。

在命令行程序中執(zhí)行:python cmd.py --help,將顯示出以下信息:

從幫助信息中可以看到,命令行被組織為三個子命令,分別為add,delete,show。

在命令行中執(zhí)行:python cmd.py add --help,可以查看add子命令的幫助信息:

對于add子命令,它有3個參數(shù),分別為用戶名、聯(lián)系地址、電話號碼;其中用戶名為必選參數(shù),其它兩個為可選參數(shù)。

在命令行中執(zhí)行:python cmd.py add --name 'Eric' --addr 'California,USA' --phone '0076938377'`

添加一個User的處理邏輯將由add_fn()來完成。程序中將得到一個信息為{name='Eric',addr='California,USA', phone='0076938377'}的User。

其它的delete和show子命令與此類似,不再贅述。

3.小結(jié)

使用Python的argparse模塊,短短的幾十行代碼就可以搭建起來一個命令行程序的骨架。

argparse模塊中最重要的是ArgumentParser對象,它包含了以下幾個方法:

  • add_argument()

  • add_subparsers()

  • parse_args()


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3565

    瀏覽量

    93536
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    949

    瀏覽量

    29744
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375

原文標(biāo)題:干貨 | 使用Python輕松寫出漂亮的命令行程序

文章出處:【微信號:ZTEdeveloper,微信公眾號:中興開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲的命令行工具介紹

    Axf Tool 是桃芯科技一個用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲的命令行工具。該工具已集成到 ingWizard 的項目快捷菜單里。
    的頭像 發(fā)表于 11-03 17:00 ?1146次閱讀
    用于分析可執(zhí)<b class='flag-5'>行程序</b>和內(nèi)存轉(zhuǎn)儲的<b class='flag-5'>命令行</b>工具介紹

    cmd網(wǎng)絡(luò)經(jīng)典命令行

    cmd網(wǎng)絡(luò)經(jīng)典命令行:
    發(fā)表于 06-11 15:17 ?36次下載
    cmd網(wǎng)絡(luò)經(jīng)典<b class='flag-5'>命令行</b>

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對于大多用戶來說往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2276次閱讀

    博達(dá)環(huán)網(wǎng)配置命令行

    博達(dá)工業(yè)交換要環(huán)網(wǎng)配置命令行
    發(fā)表于 12-27 16:24 ?0次下載

    CMD的命令行高級教程

    CMD的命令行高級教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級教程

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    命令行中記筆記的神器-Jrnl

    Jrnl 是用Python編寫的命令行筆記應(yīng)用程序,用起來非常簡單方便,特別適合需要快速記錄文本信息的同學(xué)。
    的頭像 發(fā)表于 02-24 14:07 ?1389次閱讀
    在<b class='flag-5'>命令行</b>中記筆記的神器-Jrnl

    如何在Linux命令行中運行Python腳本

    Python 是一種高級編程語言,被廣泛應(yīng)用于數(shù)據(jù)科學(xué)、機器學(xué)習(xí)、Web 開發(fā)等領(lǐng)域。在 Linux 操作系統(tǒng)中,Python 是一個默認(rèn)安裝的解釋器,用戶可以通過命令行界面(CLI)來運行
    的頭像 發(fā)表于 05-12 14:49 ?1640次閱讀

    Fcoder從命令行批量轉(zhuǎn)換為TIFF

    命令行批量轉(zhuǎn)換為TIFF 2TIFF圖像轉(zhuǎn)換軟件是一個專業(yè)的命令行實用程序,用于以批處理模式將辦公文檔和圖像轉(zhuǎn)換為TIFF。基于簡單的命令行語法,它可以在PC、服務(wù)器上使用,也可以內(nèi)
    的頭像 發(fā)表于 05-22 14:13 ?738次閱讀
    Fcoder從<b class='flag-5'>命令行</b>批量轉(zhuǎn)換為TIFF

    linux虛擬機怎么調(diào)出命令行

    在Linux虛擬機中調(diào)出命令行界面,可以通過以下步驟實現(xiàn): 打開虛擬機,進入到Linux系統(tǒng)。 在桌面或應(yīng)用菜單中找到終端或命令行圖標(biāo),點擊打開。 輸入命令行指令,執(zhí)行相應(yīng)的操作。 另外,也可以通過
    的頭像 發(fā)表于 11-08 11:28 ?2938次閱讀

    linux切換到命令行模式

    在Linux中,可以通過以下步驟切換到命令行模式: 打開終端??梢栽趹?yīng)用菜單中找到終端或命令行終端。 在終端中輸入命令“exit”或“l(fā)ogout”,然后按回車鍵。 系統(tǒng)會提示您輸入管理員密碼。輸入
    的頭像 發(fā)表于 11-13 16:47 ?1692次閱讀

    linux命令行運行步驟

    運行Linux命令行涉及以下步驟: 打開終端 在Linux系統(tǒng)中,打開命令行界面的方式有多種,最常見的是打開終端應(yīng)用程序??梢栽趹?yīng)用程序菜單中找到終端,點擊打開。 熟悉
    的頭像 發(fā)表于 11-17 10:18 ?735次閱讀

    pycharm命令行終端運行代碼

    Python是一種非常流行的編程語言,許多開發(fā)者使用它來編寫各種應(yīng)用程序和腳本。為了方便開發(fā)者編寫和測試代碼,PyCharm是一種集成開發(fā)環(huán)境(IDE),它提供了許多功能和工具,其中包括命令行終端
    的頭像 發(fā)表于 11-22 11:20 ?4393次閱讀

    eclipse怎么使用命令行

    。JDK是運行Java程序所必需的環(huán)境,而Eclipse則是一個基于Java開發(fā)的IDE。在確保安裝完畢后,我們可以通過以下步驟來在命令行
    的頭像 發(fā)表于 12-06 11:26 ?2348次閱讀

    idea如何輸入命令行參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令行參數(shù)。命令行參數(shù)是在運行時傳遞給程序的值,用于指定程序的行為和配置選項。本
    的頭像 發(fā)表于 12-06 15:01 ?1029次閱讀