最近在研究pathon的命令列解析工具,argparse,它是Python標準庫中推薦使用的編寫命令列程式的工具。
以前老是做UI程序,今天試了下命令列程序,感覺相當好,不用再花大把時間去研究界面問題,尤其是vc++中尤其繁瑣。
現在用python來實作命令列,核心運算模組可以用c自己寫擴充函式庫,效果還挺好。
學習了argparse,在官方文件中找到一篇toturial,簡單翻譯了下。
http://docs.python.org/2/howto/argparse.html#id1
Argparse Tutorial
這篇教學簡潔地介紹了Python標準函式庫推薦使用的指令行參數解析模組-Argparse的使用。
1、基本概念
在這篇教學中我們透過一個常見的ls指令來展示argparse的功能。
$ ls cpython devguide prog.py pypy rm-unused-function.patch $ ls pypy ctypes_configure demo dotviewer include lib_pypy lib-python ... $ ls -l total 20 drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpython drwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide -rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.py drwxr-xr-x 14 wena wena 4096 Feb 7 00:59 pypy -rw-r--r-- 1 wena wena 741 Feb 18 01:01 rm-unused-function.patch $ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
從以上的四個指令中,我們能夠了解以下幾個基本概念:
1)、ls指令在沒有參數的情況下也是可以運作的,預設列印出目前目錄下的所有內容。
2)、如果我們想讓它展示更多內容,那麼我們需要給它多一點參數。在這種情況下,我們想要顯示一個不同的目錄,pypy。我們所做的就是明確了常見的定位參數(positional argument),這樣命名是因為需要程式根據參數在命令列中的位置而決定要做什麼。這個概念與指令cp更為接近,它的用法是cp src dest,src表示的是你想要拷貝的文件,dest表示你想要將文件拷貝到哪裡。
3)、現在,我想要改變程式的行為。在我們的例子中,我想顯示文件的向西資訊而不僅僅是文件名,參數-l 則是我們所知道的可選參數(optinal argument)
4)、最後一句是顯示幫助的文檔的一個片段,當你遇到你從未使用過的指令時,你可以透過它學習怎麼使用。
2、基本認知
我們從一個基本的程式開始(它什麼都不做)
import argparse parser = argparse.ArgumentParser() parser.parse_args()
運行結果:
$ python prog.py $ python prog.py --help usage: prog.py [-h] optional arguments: -h, --help show this help message and exit $ python prog.py --verbose usage: prog.py [-h] prog.py: error: unrecognized arguments: --verbose $ python prog.py foo usage: prog.py [-h] prog.py: error: unrecognized arguments: foo
結果分析:
1)、若不給參數而執行這個程序,將不會得到任何結果。
2)、第二個命名顯示了使用的argparse的好處,你什麼也沒做,卻得到了一個很好的幫助訊息。
3)、我們無需人為設定--help參數,就能得到一個好的幫助資訊。但是若給其他參數(例如foo)就會產生一個錯誤。
3、位置參數
首先,給一個例子:
#import argparse parser = argparse.ArgumentParser() parser.add_argument("echo") args = parser.parse_args() print args.echo
運行結果:
$ python prog.py usage: prog.py [-h] echo prog.py: error: the following arguments are required: echo $ python prog.py --help usage: prog.py [-h] echo positional arguments: echo optional arguments: -h, --help show this help message and exit $ python prog.py foo foo
結果分析:
這次,我們增加了一個add_argument()方法,用來設定程式可接受的命令列參數。
現在要執行程序,就必須設定一個參數。
parse_args()方法實際上從我們的命令列參數中傳回了一些數據,在上面的例子中是echo
這個像「魔法」一樣的過程,是argparse自動完成的。
儘管自動產生的幫助資訊展示地很美觀,但是我們仍然無法只根據echo這個參數知道它是做什麼的。所以,我們增加了一些東西,使得它變得更有用。
import argparse parser = argparse.ArgumentParser() parser.add_argument("echo", help="echo the string you use here") args = parser.parse_args() print args.echo
運行結果:
$ python prog.py -h usage: prog.py [-h] echo positional arguments: echo echo the string you use here optional arguments: -h, --help show this help message and exit
在此基礎上,我們再多改變一點:(計算輸入參數square的平方)
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number") args = parser.parse_args() print args.square**2
#下面是運行結果:
##
$ python prog.py 4 Traceback (most recent call last): File "prog.py", line 5, in <module> print args.square**2 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'#這個程式並不能正確運行,因為argparse會將輸入當作字串處理,所以我們需要設定它的類型:(type=int)
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", help="display a square of a given number", type=int) args = parser.parse_args() print args.square**2
下面是運行結果:
$ python prog.py 4 16 $ python prog.py four usage: prog.py [-h] square prog.py: error: argument square: invalid int value: 'four'現在,這個程式能夠順利運行,而且能夠處理一些錯誤輸入。 以上就是關於Python命令列解析工具Argparse的簡單使用教程,希望對大家有幫助。 更多Python指令列解析工具Argparse的詳細介紹相關文章請關注PHP中文網!

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

本文指導Python開發人員構建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等庫詳細介紹,強調輸入/輸出處理,並促進用戶友好的設計模式,以提高CLI可用性。

文章討論了虛擬環境在Python中的作用,重點是管理項目依賴性並避免衝突。它詳細介紹了他們在改善項目管理和減少依賴問題方面的創建,激活和利益。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。