首頁 > 軟體

Python 新增命令列引數步驟

2022-08-05 14:02:10

前言

許多工程式如果為其構造為一個命令列介面,就可以通過接受不同的引數來改變它的工作方式。例如,在爬蟲程式中,不同 URL 通常可以作為命令列引數傳遞給任務程式,從而可以爬取不同網頁中的資料。在 Python 標準庫中包含一個強大的 argparse 模組,可以輕鬆建立豐富的命令列引數解析。

新增命令列引數的一般步驟

在程式指令碼中, argparse 的基本使用方式可以分三個步驟顯示:

  • 定義指令碼要接受的引數,生成新的引數解析器
  • 呼叫定義的解析器,返回一個包含所有結果引數的物件
  • 使用帶有引數的命令呼叫指令碼,使得定義的引數行為生效

一般而言,使用命令列引數的指令碼遵循以下結構:

匯入相關庫
定義函數
定義引數解析器
對引數進行操作
使用引數呼叫函數,以執行不同操作

其中,一般使用 main 函數來顯式的宣告程式碼的執行入口,簡單情況下,我們可以直接使用命令列傳入的引數而無需進行復雜處理。

命令列引數範例

接下來,我們通過一個範例來了解如何新增並使用命令列引數。首先建立一個指令碼 argparse_example.py,該指令碼接受單個整數作為位置引數,並列印執行次數的 “Hello world.”。指令碼程式碼如下,我們遵循上述結構,其中定義的 main 僅僅執行列印功能:

import argparse

def main(num):
    print('Hello world.n' * num)

if __name__ == '__main__':
    parse = argparse.ArgumentParser()
    parse.add_argument('number', type=int, help='A number')
    args = parse.parse_args()

    main(args.number)

在指令碼中,引數通過 add_arguments 新增到解析器。定義了所有引數之後,呼叫 parse_args() 將返回一個包含引數解析結果的物件,如果出現錯誤則退出執行。

呼叫指令碼並檢查引數的使用方式,不帶引數呼叫指令碼時會自動顯示幫助資訊,使用引數 -h 可以顯示擴充套件幫助資訊:

$ python argparse_example.py
usage: argparse_example.py [-h] number
argparse_example.py: error: the following arguments are required: number
$ python argparse_example.py -h
usage: argparse_example.py [-h] number

positional arguments:
  number      A number

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

使用額外引數呼叫指令碼,可以按程式預期執行指令碼:

$ python argparse_example.py 3
Hello world.
Hello world.
Hello world.

$ python argparse_example.py three
usage: argparse_example.py [-h] number
argparse_example.py: error: argument number: invalid int value: 'three'

更改指令碼,新增可選引數用於接受所需列印的字串,且預設值為 “Hello world”,編寫argparse_example_2.py 指令碼如下所示:

import argparse
def main(string, num):
    print(string * num)
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('num', type=int, help='A number')
    parser.add_argument('-s', type=str, help='String to print', default='Hello world.n')
    args = parser.parse_args()

    main(args.s, args.num)

再次執行指令碼,可以看到幫助已經更新,使用 -s 選項可以列印不同的字串:

$ python argparse_example_2.py -h
usage: argparse_example_2.py [-h] [-s S] num

positional arguments:
  num         A number

optional arguments:
  -h, --help  show this help message and exit
  -s S        String to print
$ python argparse_example_2.py 3Hello world.
Hello world.
Hello world.

$ python argparse_example_2.py 3 -s 'I love movie'
I love movieI love movieI love movie

在實際場景中,我們應當為每個引數都新增一個幫助描述資訊,引數可以分為位置引數和可選引數,它們的使用方式具有較大差別:

  • 如果引數以 - 開頭,則將其視為可選引數,例如指令碼中的 -s 引數。否則,該引數為位置引數,如指令碼中的數位引數
  • 為了清楚起見,應當始終為可選引數定義預設值。如果不顯式的定義預設值,則預設為 None,但這可能會令使用者困惑
  • 同時,在新增命令列引數時應當始終利用 add_agrment() 方法的 help 引數新增帶有引數描述的幫助資訊,這在呼叫指令碼時即為關鍵,能夠幫助使用者瞭解每個命令列引數的含義

到此這篇關於Python 新增命令列引數步驟的文章就介紹到這了,更多相關Python 新增命令列引數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com