Python-接受来自命令行的参数的实例

100 阅读1分钟

Python 提供了几种方法来处理我们从命令行调用程序时传递的参数。

到目前为止,你已经从 REPL 中运行程序,或者使用

这样做时,你可以传递额外的参数和选项,像这样。

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')

还有更多的选项,但这些是最基本的。

而且还有一些社区包也提供了这种功能,如ClickPython Prompt Toolkit