這篇文章主要為大家詳解Python命令列解析工具Argparse用法,有興趣的小夥伴們可以參考一下
最近在研究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中文網其他相關文章!

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero

Inpython,一個“列表” isaversatile,mutableSequencethatCanholdMixedDatateTypes,而“陣列” isamorememory-sepersequeSequeSequeSequeSequeRingequiringElements.1)列表

pythonlistsandArraysareBothable.1)列表Sareflexibleandsupportereceneousdatabutarelessmory-Memory-Empefficity.2)ArraysareMoremoremoremoreMemoremorememorememorememoremorememogeneSdatabutlesserversEversementime,defteringcorcttypecrecttypececeDepeceDyusagetoagetoavoavoiDerrors。

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

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

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具