繁体   English   中英

用于用户输入的python库

[英]python library for user input

我正在用 python 实现一个小的命令行工具,它需要问用户几个问题。 我用

raw_input('Are you male or female?')

每时每刻。 现在我希望能够处理愚蠢的用户(或者那些懒得阅读/记住文档的用户),所以我需要检查答案是否有意义。

gender = ''
while gender not in ['male', 'female']:
    gender = raw_input('Are you male or female?')

我想知道是否存在像 argparse 这样的东西可以自动解决这个问题,比如

import inputparse 
gender = inputparse.get_input(prompt='Are you male or female?', type=str, possible_input=['male', 'female'])

并会负责自动检查等?

这个问题的公认答案: cmd库可能对您感兴趣。

“Cmd 类为编写面向行的命令解释器提供了一个简单的框架。”

这个本周 Python 模块页面以它为特色,并且有一些示例和解释。

这个问题很老了,但我今天正在研究它。 Al Swigert 在Automate the Boring Stuff With Python 中推荐了库pyinputplus

我不知道这样的库是否存在,但是您可以编写这样的高阶函数:

def check_input(predicate, msg, error_string="Illegal Input"):
    while True:
        result = input(msg).strip()
        if predicate(result):
            return result
        print(error_string)

result = check_input(lambda x: x in ['male', 'female'],
                                   'Are you male or female? ')
print(result)

输出:

Are you male or female? foo
Illegal Input
Are you male or female? bar
Illegal Input
Are you male or female? Male
Illegal Input
Are you male or female? male
male

我在这个线程中偶然发现了一个类似的库,我对没有一个库感到非常失望,所以我写了一个。 在接下来的几天里,我会在这方面做很多工作,因为我需要更多的功能来写我正在写的东西。

选一个

又要死灵了……

如果您需要一个简单的帮助库来解决问题,请查看click 它的主要重点是命令行选项,但我认为它非常适合您的用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM