简体   繁体   中英

Starting raw_input() with pre determined text

I'd like to be able to get input from the user (through raw_input() or a module) and be able to have text automatically be already entered that they can add to, delete, or modify. I know in javascript when you're using a prompt, you can do it like

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

and it will appear as:

Enter your name:
put name here

where 'put name here' is in the text box and can be modified. I'm hoping to implement this in a shell environment (I use unix) as opposed to a window.

Any ways to do this?

Oh and tell me if I need to clarify what I am hoping for more.


I don't think you guys understand what I'm trying to do.

I basically want to include the prompt in the input, but have the user be able to backspace out the prompt/edit it if they want.

The script would possibly be used for a simple shell based one line text editor, and a tab completion type thing.

On UNIX and UNIX-alikes, such as Mac OS X and Linux, you can use the readline module. On Windows you can use pyreadline .

If you do it the way minitech suggests in his comment, write a little function to make it easier:

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

name = input_default("What is your name?", "Not Sure")

Mmm, kinda hack, but try this one.

Windows:

import win32com.client as win

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

In Linux/Unix environment, you can use the pyreadline , readline or curses libraries. You can find one possible solution here :

def rlinput(prompt, prefill=''):
    readline.set_startup_hook(lambda: readline.insert_text(prefill))
    try:
        return raw_input(prompt)
    finally:
        readline.set_startup_hook()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM