gpt4 book ai didi

python - 如何在Python中将交互式提示与argparse结合起来?

转载 作者:行者123 更新时间:2023-12-01 22:57:13 25 4
gpt4 key购买 nike

我有一个带有大量潜在参数的程序。它基本上允许用户获取/设置/删除/列出非常小的数据库中的任何表。每列都有一个可以传递的参数。
这不是主界面,只是一个偶尔有用的管理界面。

无论如何,如果用户想要在表中插入一行,他必须知道所有列的名称。虽然从帮助中很容易看出这一点,但这也是一件令人痛苦的事情。

因此,我更改了代码,以便用户可以传递 --prompt 选项,程序将提示他们输入与他们指定的表关联的每个列名称。但我的问题是,我现在需要在两个地方复制我的输入约束(选择、类型等)——argparse 和这个提示函数。

  • 问题 #1:有更好的方法吗?
  • 问题 #2:是否有一种干净的方法可以为此目的引用 argparse 约束?
  • 问题 #3:是否有推荐的库作为结合了命令行参数、选项和提示的替代库?

谢谢

最佳答案

执行此操作的典型方法是使用自定义操作。您可以使用 argparse 选项并使用与此相同的函数来验证输入。

#!/usr/bin/env python3

import argparse


class ColumnsAction(argparse.Action):
def __call__(self, parser, namespace, value, option_string=None):
self.validate(parser, value)
setattr(namespace, self.dest, value)

@staticmethod
def validate(parser, value):
if value not in ('foo', 'bar'):
parser.error('{} not valid column'.format(value))


parser = argparse.ArgumentParser()
parser.add_argument('--columns', action=ColumnsAction)
args = parser.parse_args()
if args.columns is None:
args.columns = input('Enter columns: ')
ColumnsAction.validate(parser, args.columns)
print(args.columns)

关于python - 如何在Python中将交互式提示与argparse结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com