2011-12-14 7 views
24

Używam Python 3.2 na Ubuntu 11.10 (Linux). Kawałek mojego nowego kodu wygląda następująco:Czy możliwe jest wypełnienie wejścia() w interfejsie wiersza poleceń Pythona 3?

text = input("TEXT=")

Czy to możliwe, aby uzyskać pewne predefiniowany ciąg po wierszu, więc mogę ustawić go w razie potrzeby? Powinno być tak:

python3 file 
TEXT=thepredefinedtextishere 

Teraz naciśnij Backspace 3 razy

TEXT=thepredefinedtextish 

Teraz pędzę Wprowadź, a zmienna text powinny być thepredefinedtextish

+0

Krótka odpowiedź brzmi: nie, ale w tym celu musi istnieć sztuczka 'curses' lub' readline'. +1 dla pytania. –

+0

"Enter blargh (Domyślnie: 3)" nie robi tego, o co prosisz, ale rozwiązuje ten sam problem. –

+0

@LennartRegebro: To nie służy dokładnie temu samemu celowi. Wyobraź sobie, że użytkownik powinien wprowadzić listę ścieżek wyszukiwania, z pewnymi predefiniowanymi wartościami domyślnymi. Użytkownik prawdopodobnie będzie chciał uzupełnić wstępnie zdefiniowaną listę zamiast jej zastępować. –

Odpowiedz

21

Jeśli interpreter Pythona jest połączone z GNU readline, używa go input(). W takim przypadku powinno zadziałać:

def input_with_prefill(prompt, text): 
    def hook(): 
     readline.insert_text(text) 
     readline.redisplay() 
    readline.set_pre_input_hook(hook) 
    result = input(prompt) 
    readline.set_pre_input_hook() 
    return result 
+0

Nie działa domyślnie w systemie Mac OS X. Musiałem również zmienić 'input()' na 'raw_input()' lub spowodowałoby to "NameError: name '* to co wpisałem *' nie jest zdefiniowane". –

+2

@EdwardFalk To nie ma nic wspólnego z Mac OS X. Używasz Pythona 2, podczas gdy to pytanie dotyczy Pythona 3. –

+0

Ahh, przegapiłem tę część. –

Powiązane problemy