python之Click的簡單應用


一、介紹

Click是一個Python包,用於以可組合的方式創建漂亮的命令行界面,只需要很少的代碼。這是“命令行界面創建工具包”。它具有高度可配置性,但具有開箱即用的合理默認值。

安裝:

pip install click

官方文檔(7.x版本)

 

二、使用

簡單的使用步驟:
@click.command() 裝飾一個函數,使之成為命令行接口;
@click.option() 裝飾函數,為其添加命令行選項等。

 

官方示例

# 此文件名為hello.py

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): """Simple program that greets NAME for a total of COUNT times.""" for x in range(count): click.echo('Hello %s!' % name) if __name__ == '__main__': hello()

在上面的例子中,函數hello接受兩個參數,分別是count和name,他們的取值從命令行中獲取,這里我們使用了click模塊中的command、option、echo,他們的作用如下:

command:使函數hello成為命令行接口
option:增加命令行選項
echo:輸出結果,使用echo進行輸出是為了更好的兼容性,因為python 2中的print是個語句,python 3中的print 是一個函數
運行上面的腳本,可以通過命令指定--name,--count的值,由於我們在option中指定了prompt選項,那么如果我們執行腳本沒有傳遞name這個參數時,Click會提示我們在交互模式下輸入。

運行時的樣子:

$ python hello.py --count=3
Your name: John
Hello John!
Hello John!
Hello John!

 

 

它會自動生成格式良好的幫助頁面:

$ python hello.py --help
Usage: hello [OPTIONS]

  Simple program that greets NAME for a total of COUNT times.

Options:
  --count INTEGER  Number of greetings.
  --name TEXT      The person to greet.
  --help           Show this message and exit.

 

三、其他參數

1、option的參數

option最基本的用法就是通過指定命令行選項的名稱,從命令行讀取參數值,再將其傳遞給函數。option常用的參數含義:

  • default: 設置命令行參數的默認值
  • help:參數說明
  • type:參數類型,可以是str、int、float等
  • prompt:當在命令行中沒有輸入相應的參數時,會更具prompt提示用戶輸入
  • nargs:指定命令行參數接受的值的個數
  • required:是否為必填參數
import click


@click.command()
@click.option('--desc', nargs=2, type=str)  # nargs確定參數個數,變量值會以tuple形式傳入函數
def hello(desc):
    click.echo(desc)
    click.echo('Hello %s %s' % desc)


if __name__ == '__main__':
    hello()

# 執行
python hello.py --desc "帥哥" "xx"

# 結果
('帥哥', 'xx')
Hello 帥哥 xx

 

四、擴展用法

1、限定用戶從選項列表中選擇輸入

import click


@click.command()
@click.option('--sex', required=True, type=click.Choice(['male', 'female']), prompt='你的性別')  # 限定-c的值為start,或者stop,required表示是否為必填參數
def set_sex(sex):
    click.echo('你的性別是%s' % sex)


if __name__ == '__main__':
    set_sex()

# 1.輸入參數
python test.py --sex male
你的性別是male

# 2.不輸入參數
python test.py
你的性別 (male, female): male
你的性別是male

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM