5

我希望能够从用户那里获得输入(通过raw_input()或模块),并且能够自动输入文本,他们可以添加、删除或修改。我知道在 javascript 中,当您使用提示时,您可以这样做

var = prompt("Enter your name: ","put name here")

它会显示为:

Enter your name:
put name here

where'put name here'在文本框中,可以修改。我希望在 shell 环境(我使用 unix)而不是窗口中实现这一点。

有什么方法可以做到这一点?

哦,告诉我是否需要澄清我的期望。


我想你们不明白我在做什么。

我基本上想在输入中包含提示,但如果他们愿意,用户可以退格提示/编辑它。

该脚本可能用于基于简单 shell 的单行文本编辑器和制表符完成类型的东西。

4

2 回答 2

3

在 UNIX 和类似 UNIX 的系统上,例如 Mac OS X 和 Linux,您可以使用readline模块。在 Windows 上,您可以使用pyreadline

如果您按照 minitech 在他的评论中建议的方式进行操作,请编写一个小函数以使其更容易:

def input_default(prompt, default):
    return raw_input("%s [%s] " % (prompt, default)) or default

name = input_default("What is your name?", "Not Sure")
于 2013-09-29T23:26:53.667 回答
3

嗯,有点黑客,但试试这个。

视窗:

import win32com.client as win

shell = win.Dispatch("WScript.Shell").SendKeys("Put name here")
raw_input("Enter your name: ")

在 Linux/Unix 环境中,您可以使用pyreadlinereadlinecurses库。您可以在这里找到一种可能的解决方案:

def rlinput(prompt, prefill=''):
    readline.set_startup_hook(lambda: readline.insert_text(prefill))
    try:
        return raw_input(prompt)
    finally:
        readline.set_startup_hook()
于 2013-09-29T23:30:03.827 回答