Python 提供了幾種處理從命令行調用程序時傳遞的參數的方法。
到目前為止,您已經從 REPL 運行程序,或者使用以下方式:
python <filename>.py
當這樣做時,您可以傳遞額外的參數和選項,例如:
python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>
處理這些參數的一種基本方式是使用標準庫中的 sys
模塊。
您可以獲取在 sys.argv
列表中傳遞的參數:
import sys
print(len(sys.argv))
print(sys.argv)
sys.argv
列表的第一個元素包含運行的文件名,例如 ['main.py']
。
這是一種簡單的方式,但是您需要做很多工作。您需要驗證參數,確保它們的類型正確,需要在用戶未正確使用程序時向其提供反饋。
Python 還提供了另一個幫助您的標準庫包:argparse
。
首先,您導入 argparse
,並呼叫 argparse.ArgumentParser()
,並傳遞程序的描述:
import argparse
parser = argparse.ArgumentParser(
description='This program prints the name of my dogs'
)
然後,您繼續添加要接受的參數。例如,在這個程序中,我們使用 -c
選項來傳遞一種顏色,像這樣:python program.py -c red
import argparse
parser = argparse.ArgumentParser(
description='This program prints a color HEX value'
)
parser.add_argument('-c', '--color', metavar='color', required=True, help='the color to search for')
args = parser.parse_args()
print(args.color) # 'red'
如果未指定該參數,程序將引發錯誤:
➜ python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c
您可以設置一個選項,其中包含一組特定的值,使用 choices
:
parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
➜ python python program.py -c blue
usage: program.py [-h] -c color
program.py: error: argument -c/--color: invalid choice: 'blue' (choose from 'yellow', 'red')
還有更多的選項,但這些是基本的。
還有一些社群提供的包也提供了此功能,例如 Click 和 Python Prompt Toolkit。