在Python中創(chuàng)建命令行界面的最佳方式

前言:

我們先給大家介紹什么是命令行界面(CLI):

通過創(chuàng)建命令行界面(CLI)近她,可以使程序功能強大并具有交互性。CLI允許您接受命令行參數(shù)(操作系統(tǒng)命令行中程序名稱后面的信息)赘阀,以便向程序添加其他特性炒嘲,使代碼易于使用和靈活。根據(jù)程序的不同秧秉,這些參數(shù)可用于添加其他特性帕棉,如查看幫助文檔针肥、指定輸出文件或啟用測試特性,這些特性在正常使用時可能會出現(xiàn)問題笤昨。

當我們剛開始用Python編程時,我們大多數(shù)只收集用戶輸入握恳,交互方式是這樣的:

雖然這段代碼對于簡單的腳本來說很好瞒窒,但是這段代碼不夠靈活。當用戶運行這個程序時乡洼,它們被限制為一組定義的規(guī)則崇裁。例如,如果我想將輸出記錄到文本文件中束昵,該怎么辦?作為一個用戶拔稳,您可以創(chuàng)建一個命令行界面來提供這些問題的解決方案。

重要的注意事項:

在創(chuàng)建CLI時锹雏,重要的是要考慮以下幾點:

1.必需參數(shù):為了程序的運行巴比,哪些參數(shù)是絕對必需的?

2.文檔:寫出每個選項和參數(shù)的函數(shù)是很重要的,這樣新用戶就可以知道你的程序是如何工作的。

3.處理錯誤情況:讓用戶確切地知道哪里出了問題

4.運行時狀態(tài):如果任務沒有立即完成轻绞,您應該打印出當前的進度

使用argparse讀取參數(shù):

Argparse是一個用于解析命令行參數(shù)的Python標準庫模塊采记。作為程序員,您可以定義要接受的參數(shù)政勃,而argparse將知道如何從sys中解析這些參數(shù)唧龄。當用戶給程序提供無效參數(shù)時,Argparse還會自動生成幫助和使用消息奸远,并輸出錯誤既棺。它使用起來非常簡單,并且可以很容易地編寫直觀的CLI懒叛。

首先丸冕,創(chuàng)建一個名為test_cl .py的新文件,導入模塊并初始化一個新的解析器:

現(xiàn)在使用--help選項運行代碼:

你應該會收到一個很好的默認幫助信息芍瑞,像這樣:

祝賀您創(chuàng)建了第一個命令行界面!

現(xiàn)在讓我們添加一個歡迎消息晨仑,簡要地讓您的用戶知道這個程序是做什么的:

現(xiàn)在用-h標志運行程序。你應該可以看到你的歡迎信息拆檬。

添加參數(shù):

假設我們正在編寫一個程序來爬一個網(wǎng)頁洪己。我們可能需要的一些參數(shù)是網(wǎng)頁的域-domain或-d,日志輸出到一個輸出文件-ofile或-o的選項竟贯,可能還需要輸出到控制臺的特定行數(shù)-lines或-l的選項答捕。對于這個例子,我們將域參數(shù)設置為必需的屑那,而ofile和lines參數(shù)將是可選的拱镐。

通過使用.add_argument,我們可以很容易地向argparse CLI添加額外的參數(shù)持际,該參數(shù)允許我們定義使用細節(jié)沃琅。我們可以添加必要的參數(shù)——域,如:

現(xiàn)在運行帶有-h參數(shù)的程序蜘欲,查看您編寫的文檔!

因為——domain是一個必需的參數(shù)益眉,嘗試運行不帶任何標志的程序,您將收到以下消息:

Python作為一門不斷發(fā)展與普及的語言姥份,還在不斷更新中郭脂。在學習時,建議找一些學習伙伴一起來學習和討論澈歉,效果更佳展鸡。如果想學習Python,歡迎加入Python學習交流群(627012464)埃难,一起督促莹弊,一起學習涤久。里面有開發(fā)工具,很多干貨和技術(shù)資料分享箱硕!

成功了拴竹!

現(xiàn)在使用argparse添加額外的參數(shù)。如果沒有指定需要哪些參數(shù)剧罩,argparse將假定它們是可選的栓拜。你也可以設置參數(shù)的類型,對于——lines惠昔,我們?nèi)∫粋€整數(shù)幕与。您還可以為.add_argument設置其他有用的選項——比如action=

現(xiàn)在測試您的代碼,以確保一切正常運行镇防。一種簡單的方法是將參數(shù)的值存儲為變量啦鸣,然后打印這些值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末来氧,一起剝皮案震驚了整個濱河市诫给,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啦扬,老刑警劉巖中狂,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扑毡,居然都是意外死亡胃榕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門瞄摊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋又,“玉大人,你說我怎么就攤上這事换帜⌒ㄈ溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵惯驼,是天一觀的道長蹲嚣。 經(jīng)常有香客問我,道長跳座,這世上最難降的妖魔是什么端铛? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任泣矛,我火速辦了婚禮疲眷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘您朽。我一直安慰自己狂丝,他們只是感情好换淆,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著几颜,像睡著了一般倍试。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛋哭,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天县习,我揣著相機與錄音,去河邊找鬼谆趾。 笑死躁愿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的沪蓬。 我是一名探鬼主播彤钟,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跷叉!你這毒婦竟也來了逸雹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤云挟,失蹤者是張志新(化名)和其女友劉穎梆砸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體植锉,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡辫樱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了俊庇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮暑。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辉饱,靈堂內(nèi)的尸體忽然破棺而出搬男,到底是詐尸還是另有隱情,我是刑警寧澤彭沼,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布缔逛,位于F島的核電站,受9級特大地震影響姓惑,放射性物質(zhì)發(fā)生泄漏褐奴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一于毙、第九天 我趴在偏房一處隱蔽的房頂上張望敦冬。 院中可真熱鬧,春花似錦唯沮、人聲如沸脖旱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萌庆。三九已至溶褪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間践险,已是汗流浹背猿妈。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巍虫,地道東北人于游。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像垫言,于是被迫代替她去往敵國和親贰剥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容