/

Python,接受命令行參數

Python,接受命令行參數

Python 提供了幾種處理從命令行調用程序時傳遞的參數的方法。

到目前為止,您已經從 REPL 運行程序,或者使用以下方式:

1
python <filename>.py

當這樣做時,您可以傳遞額外的參數和選項,例如:

1
2
python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>

處理這些參數的一種基本方式是使用標準庫中的 sys 模塊。

您可以獲取在 sys.argv 列表中傳遞的參數:

1
2
3
import sys
print(len(sys.argv))
print(sys.argv)

sys.argv 列表的第一個元素包含運行的文件名,例如 ['main.py']

這是一種簡單的方式,但是您需要做很多工作。您需要驗證參數,確保它們的類型正確,需要在用戶未正確使用程序時向其提供反饋。

Python 還提供了另一個幫助您的標準庫包:argparse

首先,您導入 argparse,並呼叫 argparse.ArgumentParser(),並傳遞程序的描述:

1
2
3
4
5
import argparse

parser = argparse.ArgumentParser(
description='This program prints the name of my dogs'
)

然後,您繼續添加要接受的參數。例如,在這個程序中,我們使用 -c 選項來傳遞一種顏色,像這樣:python program.py -c red

1
2
3
4
5
6
7
8
9
10
11
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'

如果未指定該參數,程序將引發錯誤:

1
2
3
➜ python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c

您可以設置一個選項,其中包含一組特定的值,使用 choices

1
parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
1
2
3
➜ 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')

還有更多的選項,但這些是基本的。

還有一些社群提供的包也提供了此功能,例如 ClickPython Prompt Toolkit

tags: [“Python”, “command line arguments”, “argparse”]