Python,從命令行接受參數

當我們從命令行調用程序時,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.argvlist作為第一項包含已運行文件的名稱,例如['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

You can set an option to have a specific set of values, using 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')

There are more options, but those are the basics.

And there are community packages that provide this functionality, too, like Click and Python Prompt Toolkit.


More python tutorials: