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: