python - 是否有与 HighLine 等效的 Python?

标签 python ruby console highline

HighLine是一个用于简化控制台输入和输出的 Ruby 库。它提供了允许您请求输入并验证它的方法。在 Python 中是否有提供类似功能的东西?

要显示 HighLine 的功能,请看以下示例:

require 'highline/import'

input = ask("Yes or no? ") do |q|
  q.responses[:not_valid] = "Answer y or n for yes or no"
  q.default = 'y'
  q.validate = /\A[yn]\Z/i
end

它询问“是或否?”并让用户输入一些内容。只要用户不输入 y 或 n(不区分大小写),它就会打印“Answer y or n for yes or no”并让用户再次输入答案。此外,如果用户按 Enter,它默认为 y。最后,完成后,输入将存储在 input 中。这是一个示例结果,其中用户首先输入“EH???”然后是“y”:

Yes or no? |y| EH???
Answer y or n for yes or no
?  y

在 Python 中是否有类似的简单方法来做同样的事情?

最佳答案

您可以使用 Python 3 模块 cliask .该模块的灵感来自 the answer of IT Ninja , 修复 some deficiencies in it并允许通过正则表达式、谓词、元组或列表进行验证。

获取模块的最简单方法是通过pip 安装它。 (其他安装方式参见 readme):

sudo pip install cliask

然后您可以像下面的示例一样通过导入来使用该模块:

import cliask

yn = cliask.agree('Yes or no? ',
                  default='y')
animal = cliask.ask('Cow or cat? ',
                    validator=('cow', 'cat'),
                    invalid_response='You must say cow or cat')

print(yn)
print(animal)

下面是运行示例时 session 的外观:

Yes or no? |y| EH???
Please enter "yes" or "no"
Yes or no? |y| y
Cow or cat? rabbit
You must say cow or cat
Cow or cat? cat
True
cat

关于python - 是否有与 HighLine 等效的 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14962930/

相关文章:

python - AMQP:确认和预取

python - Bokeh 未使用所有可用空间

ruby-on-rails - Rails 4 迁移 |添加引用表

ruby - ruby 中的大数组操作非常慢

c# - 最大化控制台窗口 - C#

python - 文本/事件流被识别为下载

python - Jinja2 "as"标签不起作用?

ruby-on-rails - ActiveRecord 可以远程连接到 PostgreSQL 并保护数据库密码吗?

c# - 卡巴斯基将我的 ConsoleApplication 检测为木马

java - 如何添加另一个控制台与多线程程序交互