欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python命令行解析工具Argparse

 更新時間:2016年04月20日 16:01:53   作者:理想空間  
這篇文章主要為大家詳細(xì)介紹了Python命令行解析工具Argparse的相關(guān)資料,感興趣的小伙伴們可以參考一下

最近在研究pathon的命令行解析工具,argparse,它是Python標(biāo)準(zhǔn)庫中推薦使用的編寫命令行程序的工具。

以前老是做UI程序,今天試了下命令行程序,感覺相當(dāng)好,不用再花大把時間去研究界面問題,尤其是vc++中尤其繁瑣。

現(xiàn)在用python來實現(xiàn)命令行,核心計算模塊可以用c自己寫擴(kuò)展庫,效果挺好。

學(xué)習(xí)了argparse,在官方文檔中找到一篇toturial,簡單翻譯了下。

http://docs.python.org/2/howto/argparse.html#id1

Argparse Tutorial
這篇教程簡明地介紹了Python標(biāo)準(zhǔn)庫推薦使用的命令行參數(shù)解析模塊——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命令在沒有參數(shù)的情況下也是可以運(yùn)行的,默認(rèn)打印出當(dāng)前目錄下的所有內(nèi)容。
2)、如果我們想讓它展示更多內(nèi)容,那么我們需要給它多一點參數(shù)。在這種情況下,我們想顯示一個不同的目錄,pypy。我們所做的就是明確了常見的定位參數(shù)(positional argument),這樣命名是因為需要程序根據(jù)參數(shù)在命令行中的位置而決定做什么。這個概念與命令cp更為接近,它的用法是cp src dest,src表示的是你想要拷貝的文件,dest表示你想要將文件拷貝到哪里。
3)、現(xiàn)在,我想要改變程序的行為。在我們的例子中,我想顯示文件的向西信息而不僅僅是文件名,參數(shù)-l 則是我們所知道的可選參數(shù)(optinal argument)
4)、最后一句是顯示幫助的文檔的一個片段,當(dāng)你遇到你從未使用過的命令時,你可以通過它學(xué)習(xí)怎么使用。

2、基本認(rèn)識

我們從一個基本的程序開始(它什么也不做)

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

運(yùn)行結(jié)果:

$ 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

結(jié)果分析:

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

3、位置參數(shù)

首先,給一個例子:

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

運(yùn)行結(jié)果:

$ 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

結(jié)果分析:

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

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

運(yùn)行結(jié)果:

$ 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

在此基礎(chǔ)上,我們再多改變一點:(計算輸入?yún)?shù)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

下面是運(yùn)行結(jié)果:

$ 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'

這個程序并不能正確運(yùn)行,因為argparse會將輸入當(dāng)作字符串處理,所以我們需要設(shè)置它的類型:(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

下面是運(yùn)行結(jié)果:

$ python prog.py 4
16
$ python prog.py four
usage: prog.py [-h] square
prog.py: error: argument square: invalid int value: 'four'

現(xiàn)在,這個程序能夠順利運(yùn)行,而且能夠處理一些錯誤輸入。

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

相關(guān)文章

  • Django視圖之ORM數(shù)據(jù)庫查詢操作API的實例

    Django視圖之ORM數(shù)據(jù)庫查詢操作API的實例

    下面小編就為大家?guī)硪黄狣jango視圖之ORM數(shù)據(jù)庫查詢操作API的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Python 新建文件夾與復(fù)制文件夾內(nèi)所有內(nèi)容的方法

    Python 新建文件夾與復(fù)制文件夾內(nèi)所有內(nèi)容的方法

    今天小編就為大家分享一篇Python 新建文件夾與復(fù)制文件夾內(nèi)所有內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python+matplotlib繪制多子圖的方法詳解

    Python+matplotlib繪制多子圖的方法詳解

    Matplotlib是Python中最受歡迎的數(shù)據(jù)可視化軟件包之一,它是?Python常用的2D繪圖庫,同時它也提供了一部分3D繪圖接口。本文將詳細(xì)介紹如何通過Matplotlib繪制多子圖,需要的可以參考一下
    2022-07-07
  • 詳解opencv Python特征檢測及K-最近鄰匹配

    詳解opencv Python特征檢測及K-最近鄰匹配

    這篇文章主要介紹了詳解opencv Python特征檢測及K-最近鄰匹配,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 制作Python數(shù)字華容道的實現(xiàn)(可選擇關(guān)卡)

    制作Python數(shù)字華容道的實現(xiàn)(可選擇關(guān)卡)

    這篇文章主要介紹了制作Python數(shù)字華容道的實現(xiàn)(可選擇關(guān)卡),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python3.6基于正則實現(xiàn)的計算器示例【無優(yōu)化簡單注釋版】

    Python3.6基于正則實現(xiàn)的計算器示例【無優(yōu)化簡單注釋版】

    這篇文章主要介紹了Python3.6基于正則實現(xiàn)的計算器,涉及Python基于正則表達(dá)式的算術(shù)式遍歷、查找及數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Python實現(xiàn)刪除文件但保留指定文件

    Python實現(xiàn)刪除文件但保留指定文件

    這篇文章主要介紹了Python實現(xiàn)刪除文件但保留指定文件,本文直接給出實現(xiàn)代碼,并同時給出代碼解釋,需要的朋友可以參考下
    2015-06-06
  • Python3網(wǎng)絡(luò)爬蟲中的requests高級用法詳解

    Python3網(wǎng)絡(luò)爬蟲中的requests高級用法詳解

    本節(jié)我們再來了解下 Requests 的一些高級用法,如文件上傳,代理設(shè)置,Cookies 設(shè)置等等。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • 關(guān)于python的xlwings與VBA間的互相調(diào)用

    關(guān)于python的xlwings與VBA間的互相調(diào)用

    這篇文章主要介紹了關(guān)于python的xlwings與VBA間的互相調(diào)用,VBA是一種通用應(yīng)用軟件腳本語言,Excel包含和許多功能強(qiáng)大的數(shù)據(jù)分析對象,例如工作表、圖表、數(shù)據(jù)透視表以及大量的數(shù)學(xué)、財務(wù)、工程和通用業(yè)務(wù)函數(shù),配合VBA可以運(yùn)用這些對象開發(fā)出自動程序
    2023-07-07
  • Python try except異常捕獲機(jī)制原理解析

    Python try except異常捕獲機(jī)制原理解析

    這篇文章主要介紹了Python try except異常捕獲機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論