国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python命令行解析工具Argparse

2019-11-25 16:50:04
字體:
來源:轉載
供稿:網友

最近在研究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的功能。

$ lscpython devguide prog.py pypy rm-unused-function.patch$ ls pypyctypes_configure demo dotviewer include lib_pypy lib-python ...$ ls -ltotal 20drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpythondrwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide-rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.pydrwxr-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 --helpUsage: 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 argparseparser = argparse.ArgumentParser()parser.parse_args()

運行結果:

$ python prog.py$ python prog.py --helpusage: prog.py [-h]optional arguments: -h, --help show this help message and exit$ python prog.py --verboseusage: prog.py [-h]prog.py: error: unrecognized arguments: --verbose$ python prog.py foousage: prog.py [-h]prog.py: error: unrecognized arguments: foo

結果分析:

1)、若不給參數而運行這個程序,將不會得到任何結果。
2)、第二條命名顯示了使用的argparse的好處,你什么也沒做,卻得到了一個很好的幫助信息。
3)、我們無需人為設置--help參數,就能得到一個良好的幫助信息。但是若給其他參數(比如foo)就會產生一個錯誤。

3、位置參數

首先,給一個例子:

import argparseparser = argparse.ArgumentParser()parser.add_argument("echo")args = parser.parse_args()print args.echo

運行結果:

$ python prog.pyusage: prog.py [-h] echoprog.py: error: the following arguments are required: echo$ python prog.py --helpusage: prog.py [-h] echopositional arguments: echooptional arguments: -h, --help show this help message and exit$ python prog.py foofoo

結果分析:

這次,我們增加了一個add_argument()方法,用來設置程序可接受的命令行參數。
現在要運行程序,就必須設置一個參數。
parse_args()方法實際上從我們的命令行參數中返回了一些數據,在上面的例子中是echo
這個像“魔法”一樣的過程,是argparse自動完成的。
盡管自動產生的幫助信息展示地很美觀,但是我們仍然無法只根據echo這個參數知道它是做什么的。所以,我們增加了一些東西,使得它變得更有用。

import argparseparser = argparse.ArgumentParser()parser.add_argument("echo", help="echo the string you use here")args = parser.parse_args()print args.echo

運行結果:

$ python prog.py -husage: prog.py [-h] echopositional arguments: echo    echo the string you use hereoptional arguments: -h, --help show this help message and exit

在此基礎上,我們再多改變一點:(計算輸入參數square的平方)

import argparseparser = 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 4Traceback (most recent call last): File "prog.py", line 5, in <module>  print args.square**2TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

這個程序并不能正確運行,因為argparse會將輸入當作字符串處理,所以我們需要設置它的類型:(type=int)

import argparseparser = 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 416$ python prog.py fourusage: prog.py [-h] squareprog.py: error: argument square: invalid int value: 'four'

現在,這個程序能夠順利運行,而且能夠處理一些錯誤輸入。

以上就是關于Python命令行解析工具Argparse的簡單使用教程,希望對大家有幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卫辉市| 滨州市| 泗洪县| 高淳县| 黄陵县| 庄河市| 武冈市| 扶绥县| 万安县| 晴隆县| 尖扎县| 丽水市| 屏南县| 塔河县| 当雄县| 资兴市| 崇仁县| 临洮县| 绍兴县| 喀什市| 定边县| 怀宁县| 佛冈县| 临城县| 峡江县| 泰州市| 沂南县| 长顺县| 巫溪县| 武穴市| 高州市| 陆川县| 汽车| 瓮安县| 永福县| 西藏| 正蓝旗| 黎川县| 团风县| 东阳市| 长治县|