Python:预先指定对raw_input的响应

时间:2014-05-20 05:06:43

标签: python

是否可以在程序中预先指定对一系列raw_input问题的响应?

就像在我的程序中的某个地方一样:

response = raw_input("Enter something: ")

我可以在程序开始之前指定我想要"某些东西"在命令行输入?

2 个答案:

答案 0 :(得分:0)

据我了解,您希望您的程序能够立即显示如下内容:

  

输入内容: _

(其中_是shell的插入符号)

因此,如果您按Enter键,raw_input将返回字符串"" - 或者您可以按退格键并编辑预填充输入。


简单的答案是,你不能这样做。问题是,当时不是Python处理输入 - 它是你的shell(bash,cmd等)。只有在你键入内容并按下回车后才输入"交付"回到Python。

readline这样的库可以提供你想要的东西,但只适用于与readline链接的Python版本(通常是Linux)。有关详情,请参阅this answer


许多程序使用的替代方法是在提示后显示默认值,如果没有给出输入,则假定该默认值。此函数应模仿此行为:

def raw_input_default(prompt, default):
    result = raw_input('{0} [{1}] '.format(prompt, default))
    if result == '':
        result = default
    return result

用法:

>>> print raw_input_default('Enter name:', 'Joe')
Enter name: [Joe] John
John
>>> print raw_input_default('Enter name:', 'Joe')
Enter name: [Joe]
Joe

答案 1 :(得分:0)

要在提示用户时实现默认,只需检查响应是否为空 - 并设置默认值。这通常显示如下:

value = raw_input('Would you like to continue? [Y/n]: ')

如果没有设置值,则大写字母表示默认值,n是用户可以输入的可选值:

value = raw_input('Would you like to continue? [Y/n]: ')

# Set the default to 'Y'
if not len(value.strip()):
     result = 'Y'
else:
     result = value