亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Python標(biāo)準模塊--argparse

asal 2016-11-05 10:34:35 1598
abstrak:1 模塊簡介你一定很奇怪Python是如何命令行中的變量的吧?argparse就是用來解決這個問題的,argparse是optparse的替代。2 模塊使用2.1 開始我發(fā)現(xiàn)解釋一個編程的概念,最簡單的方式就是用一段代碼來展示。下面就是一段超級簡單的代碼,import argparse parser = argparse.ArgumentParser(  

1 模塊簡介

你一定很奇怪Python是如何命令行中的變量的吧?argparse就是用來解決這個問題的,argparse是optparse的替代。

2 模塊使用

2.1 開始

我發(fā)現(xiàn)解釋一個編程的概念,最簡單的方式就是用一段代碼來展示。下面就是一段超級簡單的代碼,

import argparse

parser = argparse.ArgumentParser(
            description = "A simple argument parser",
            epilog = "This is where you might put example usage"
            )

parser.print_help()

控制臺輸出,

usage: main.py [-h]

A simple argument parser

optional arguments:
  -h, --help  show this help message and exit

This is where you might put example usage

這里,我們僅僅是引入argparse,然后設(shè)置了描述和使用部分。這里主要是當(dāng)你向你所創(chuàng)建的程序?qū)で髱椭鷷r,它將會告訴你如何使用它。在這個例子中,它打印出簡單的描述,默認的選項("-h")和使用示例。

我們讓這個例子更加的具體,你一般是通過命令行傳遞參數(shù),因此將代碼移到Python文件中的一個函數(shù)。

import argparse

def get_args():
    parser = argparse.ArgumentParser(
                description = "A simple argument parser",
                epilog = "This is where you might put example usage"
                )
    return parser.print_help()

if __name__ == "__main__":
    get_args()

在命令行中運行腳本,

python main.py -h

將會顯示出我們之前看到的文本信息,現(xiàn)在,我們開始學(xué)習(xí)如何添加我們需要的變量吧。

2.2 添加變量

下面一段代碼是添加三個新的我們的parser可以理解的變量。我們添加一個必須要求的變量,另外兩個不是必須要求的,我們也可以添加一個默認和一個必須要求的類型。

import argparsedef get_args():
    parser = argparse.ArgumentParser(
                description = "A simple argument parser",
                epilog = "This is where you might put example usage"
                )    # required argument
    parser.add_argument('-x',action = "store",required = True,help = "Help text for option X")    # optional argument
    parser.add_argument('-y',help = "Help text for option Y",default = False)
    parser.add_argument('-z',help = "Help text for option Z",type = int)
    print(parser.parse_args())if __name__ == "__main__":
    get_args()

控制臺輸出,

zhb@zhb-VM:~/workspace/PythonTestpythonmain.pyusage: main.py [-h] -x X [-y Y] [-z Z]
main.py: error: argument -x is required
zhb@zhb-VM:~/workspace/PythonTestpythonmain.py-xsomethingNamespace(x='something', y=False, z=None)
zhb@zhb-VM:~/workspace/PythonTestpythonmain.py-xsomething-ytextNamespace(x='something', y='text', z=None)
zhb@zhb-VM:~/workspace/PythonTestpythonmain.py-xsomething-ztextusage: main.py [-h] -x X [-y Y] [-z Z]
main.py: error: argument -z: invalid int value: 'text'zhb@zhb-VM:~/workspace/PythonTestpythonmain.py-xsomething-z10Namespace(x='something', y=False, z=10)

正如你所看到的,如果你不傳入任何變量,而直接運行代碼,你將會出錯。然后,我們僅僅傳入要求的變量,你可以看到對于其它兩個變量直接使用默認值。再然后,我們試圖將"text"傳給"-y"變量并將它存儲下來,所以,我們直到它并不要求是布爾類型。最后兩個例子顯示當(dāng)你傳入一個無效和有效的值給"-z"時的結(jié)果。

到此,變量名字不需要只有一個字符,你可以修改它,讓它的描述性更強,例如"arg1"或者"simulator"或者任何你想要的。

2.3 短選項和長選項

下面我們將會學(xué)習(xí)如何使用短選項和長選項,我們實際上已經(jīng)使用了短選項,

parser.add_argument('-x',action = "store",required = True,help = "Help text for option X")

如果我們想使用長選項,我們僅僅需要在短選項的右邊添加長選項,如下所示,

parser.add_argument('-x','--execute', action = "store",required = True,help = "Help text for option X")

你將會注意到長選項不止一個字符,并且它必須要以兩個破折號開始,而不是一個。

2.4 選項沖突

如果兩個選項相互沖突,你該如何解決?一個常見的例子就是在調(diào)試模式還是在靜音模式下,運行你的應(yīng)用?你可以在任意一種模式下運行,但是不能同時在兩種模式下運行。我們?nèi)绾畏乐褂脩粢赃@種方式運行呢?一種簡單的方式就是通過mutually_exclusie_group函數(shù),假設(shè)選項x和選項y不能同時運行。

import argparsedef get_args():
    parser = argparse.ArgumentParser(
                description = "A simple argument parser",
                epilog = "This is where you might put example usage"
                )
    group = parser.add_mutually_exclusive_group()
    group.add_argument('-x','--execute', action = "store",help = "Help text for option X")
    group.add_argument('-y',help = "Help text for option Y",default = False)
    parser.add_argument('-z',help = "Help text for option Z",type = int)
    print(parser.parse_args())if __name__ == "__main__":
    get_args()

你將會注意到我們創(chuàng)建了一個手動排它的群組,我們將需要手動排它的選項添加到群組,剩下的選項繼續(xù)添加到常規(guī)的parser群組,讓我們嘗試著在命令行中輸入如下命令,

zhb@zhb-VM:~/workspace/PythonTestpythonmain.py-x10 -y 2

當(dāng)我們執(zhí)行這條命令,控制臺輸出,

usage: main.py [-h] [-x EXECUTE | -y Y] [-z Z]main.py: error: argument -y: not allowed with argument -x/--execute

很明顯,它并沒有執(zhí)行成功,并且argparse模塊告訴我們什么原因。

2.5 總結(jié)

你現(xiàn)在了解了如何創(chuàng)建一個基本的變量解析器。這個模塊還有許多其它你可能感興趣的用法,例如定義一個交替的目標(biāo)名稱用于保存,使用不同的前綴,創(chuàng)建變量群組等等。我推薦你去閱讀官方文檔。


Nota Keluaran

Penyertaan Popular