是否可以在程序中预先指定对一系列raw_input问题的响应?
就像在我的程序中的某个地方一样:
response = raw_input("Enter something: ")
我可以在程序开始之前指定我想要"某些东西"在命令行输入?
答案 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