我正在尝试编写一个从用户那里获取一个参数的python脚本。
如果输入不属于可能的输入列表,我想抛出一条消息。
但是,尽管提供了正确的输入,但我仍然收到“未知方向...”消息。有什么问题为什么不将这些值与known_directions
列表进行比较?
import argparse
known_directions = ['start', 'stop', 'left', 'right', 'forward', 'back']
class Direction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
direction = values
if direction.lower() not in known_directions:
parser.error("Unknown direction. Available direction are 'start', 'stop', 'left', 'right', 'forward', & 'back'")
namespace.direction = direction.lower()
def create_parser():
parser = argparse.ArgumentParser(description="""
Control the movement of your bot.
""")
parser.add_argument('--direction', '-d',
help='which direction to move',
nargs=1,
metavar=("DIRECTION"),
action=Direction,
required=True)
return parser
parser = create_parser()
parser.parse_args()
答案 0 :(得分:2)
从python文档-https://docs.python.org/3/library/argparse.html#nargs
请注意,nargs = 1会产生一项的列表。这不同于 默认情况下,商品是由其自身生产的。
您需要制作<form action="/login" method="POST">
<p">Username</p>
<input type="text" name="username" placeholder="Enter Username">
<p>Password</p>
<input type="password" name="password" placeholder="Enter Password">
<input type="submit" name="" value="Login">
</form>
此外,您可能希望查看choices关键字参数来做到这一点。
direction = values[0]
答案 1 :(得分:2)
您可以只使用choices
中的add_argument
kwarg为您完成此操作。