python的argpare和click模組詳解

2021-09-19 18:15:44 字數 3538 閱讀 2522

python的argpare和click模組詳解

一、argparse模組

1、模組說明12

2、模組常用的引數12

3456

78910

3、使用方法12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

import argparse

def _argparse():

parseobj = argparse.argumentparser(description="this is script help")

# 引數說明:

# name/flag:引數的名字

# action:遇到引數的動作,預設值是store

# nargs:引數的個數,可以是具體的數字,或者是+或者是*,*表示0個或者多個引數,+號表示1個或者多個引數

# default:不指定引數時的預設值

# type:# 引數的型別

# choice:引數允許的值

# required:可選引數是否可以省略

# help:引數的幫助資訊

# dest:解析後引數的名稱

parseobj.add_argument("--host",action='store',dest='host',required=true,default="127",help="this is a host ip address",type=int)

parseobj.add_argument("--p",'--passwd',action='store', dest='pwd', required=true, default="admin123.",help="this is a host password", type=str)

parseobj.add_argument("--v", '--version', action='version', version="%(prog)s 0.1")

return parseobj.parse_args()

ifname== '__main__':

res = _argparse()

print(res.pwd)

print(res.host)

4、最後我們測試一下這個模組

a、測試 -h選項,這裡-h和--help的效果是一樣的

b、測試--v選項和--version選項

c、測試一下輸入的正確的引數

二、click模組

1、模組介紹12

click模組的作者就是flask的作者,(armin ronacher)開發的乙個第三方的模組,用於快速建立命令列。他的作用用python標準庫中的argparse相同,但是

使用更加簡單,click相對於標準庫的argparse,就好比requests庫相當於標準庫的urllib庫,click是乙個第三的庫,因此在使用之前需要安裝

2、模組安裝

1e:python3scripts>pip3.6.exe install click

3、使用步驟

a、使用@click.command()裝飾乙個函式,使之成為命令列的介面

b、使用@click.option()等裝飾函式,為其新增命令列選項等

c、先看乙個官方的例子12

3456

78910

1112

1314

import click

@click.command()

@click.option('--count',default=1,help='number of greetings')

@click.option('--name',prompt='your name',help='the person to greet')

def hello(count,name):

for x in range(count):

click.echo("hello ".format(name = name))

ifname== '__main__':

hello()
其他的應該大家都可以看懂,這個prompt的作用是什麼呢,實際就是如果我們沒有為name傳引數,他就會給出乙個提示

下面這個例子是完整的傳參

4、常用引數12

3456

常用引數

default:設定命令列引數的預設值

help:引數說明

type:引數的型別,可以是string,int,float

prompt:當在命令列中沒有輸入相應的引數,會根據prompt提示使用者輸入

nargs:指定命令列引數接受的值的個數

a、測試一下nargs引數12

3456

[email protected]()

@click.option('--post',nargs=2,help='number of post')

def hello(post):

print(post)
ifname== '__main__':

hello()
測試結果

b、測試click.choice選項12

3456

[email protected]()

@click.option('--hash',type=click.choice(["md5","sha1"]),help='type of hash')

def hello(hash):

print(hash)
ifname== '__main__':

hello()
測試結果

c、如果使用命令列輸入密碼,則預設的情況是有很大的安全隱患的,因為輸入密碼的命令在history中,其他使用者就可以通過命令的歷史列表,拿到我們的密碼,click可以為我們解決這個問題12

3456

[email protected]()

@click.option('--pwd',prompt=true,hide_input=true,help='passwd of user',confirmation_prompt=true)

def hello(pwd):

print(pwd)
ifname== '__main__':

hello()
123

prompt:要設定為true

hide_input:要設定為true

confirmation_prompt:會自動為我們進行密碼的二次驗證

測試結果如下

錯誤的輸入

正確的輸入

Python中的 and和or 和

如果a,b是數值變數,則 表示按位運算,and,or則依據是否非0來決定輸出 print 1 2 print 1 2 print 0 and 2 有false返回false,否則返回後乙個 print 1 and 2 print 1 or 2 2個都為true,返回第乙個 print 0 or 2 ...

python 包和模組 python的包和模組

再看一下os識別符號的型別及os指向的這個物件。print type os print type os.path print global os 收集全域性變數,檢視os物件資訊 輸出結果 上面結果顯示os和os.path是乙個module型別,這也是os可以使用import匯入的原因。只有modu...

關於python的 和

在python中的 和 除了分別表示乘法運算和冪運算外還有其它作用。在python中可能會經常看到類似於def function1 args,kwargs 的函式定義形式,或者看到function1 v1,v2 的函式呼叫形式,很多沒看到過的人可能會不知所以。下面分別說明 在函式定義時,表示可變位置...