2013-09-29 10 views
5

Mi piacerebbe essere in grado di ottenere input dall'utente (tramite raw_input() o un modulo) e poter inserire automaticamente il testo che è possibile aggiungere, eliminare o modificare. So che in javascript quando si sta utilizzando un prompt, è possibile farlo comeAvvio di raw_input() con il testo predeterminato

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

e apparirà come:

Enter your name: 
put name here 

dove 'put name here' è nella casella di testo e può essere modificato. Spero di implementarlo in un ambiente di shell (io uso unix) al contrario di una finestra.

In che modo è possibile farlo?

Oh, e ditemi se ho bisogno di chiarire quello che sto sperando di più.


Non credo che voi ragazzi capire quello che sto cercando di fare.

Io fondamentalmente voler includere la richiesta in ingresso, ma che l'utente sia in grado di tornare indietro fuori prompt/modificarlo, se vogliono.

Lo script sarebbe eventualmente essere utilizzato per un editor di testo una riga basata semplice shell, e una scheda tipo di completamento cosa.

+8

Questo è * veramente difficile *. Considera di dire "Inserisci il tuo nome [Nome predefinito]:" e inserendo "Nome predefinito" se l'input è la stringa vuota; è abbastanza standard per gli script. – Ryan

+1

possibile duplicato di [Python: come modificare/modificare la stringa stampata a schermo e leggere di nuovo] (http://stackoverflow.com/questions/7248076/python-how-to-modify-edit-the-string- stampa-to-schermo-e-Read-it-back) – sashkello

+0

Partenza http://stackoverflow.com/questions/187621/how-to-make-a-python-command-line-program-autocomplete-arbitrary-things -non-int pure. –

risposta

3

Su dispositivi UNIX e UNIX, come Mac OS X e Linux, è possibile utilizzare il modulo readline. Su Windows è possibile utilizzare pyreadline.

Se lo fate il modo MiniTech suggerisce nel suo commento, scrivere un po 'di funzioni per rendere più facile:

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

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

Mmm, un po' hack, ma provare questo.

di Windows:

import win32com.client as win 

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

In ambiente Linux/Unix, è possibile utilizzare le librerie pyreadline, readline o curses. È possibile trovare una soluzione possibile here:

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