有没有什么简单的方法来实现APT(高级包工具)命令行界面在Python中的作用?

我的意思是,当包管理器提示一个yes/no问题,后面跟着[yes/no]时,脚本接受yes/ Y/yes/ Y或Enter(默认为yes,由大写字母提示)。

我在官方文档中唯一找到的是input和raw_input…

我知道模仿它并不难,但是重写:|很烦人


当前回答

在2.7中,这是不是太非python化了?

if raw_input('your prompt').lower()[0]=='y':
   your code here
else:
   alternate code here

它至少能捕捉到“是”的任何变化。

其他回答

您可以使用单击的确认方法。

import click

if click.confirm('Do you want to continue?', default=True):
    print('Do something')

这将打印:

$ Do you want to continue? [Y/n]:

应该适用于Linux, Mac或Windows上的Python 2/3。

文档:http://click.pocoo.org/5/prompts/ # confirmation-prompts

Python 3.8及以上版本的一行代码:

while res:= input("When correct, press enter to continue...").lower() not in {'y','yes','Y','YES',''}: pass

这个怎么样:

def yes(prompt = 'Please enter Yes/No: '):
while True:
    try:
        i = raw_input(prompt)
    except KeyboardInterrupt:
        return False
    if i.lower() in ('yes','y'): return True
    elif i.lower() in ('no','n'): return False

在Python的标准库中有一个函数strtoool: http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util.strtobool

您可以使用它来检查用户的输入并将其转换为True或False值。

Python x.x

res = True
while res:
    res = input("Please confirm with y/yes...").lower(); res = res not in {'y','yes','Y','YES',''}