2010-11-04 11 views
6

Chcę, aby program zatrzymał się i poczekał, aż naciśniesz dowolny klawisz, aby kontynuować, ale tryb raw_input() odchodzi, a input() zastępuje go. Tak więc mam
var = input ("Naciśnij klawisz Enter, aby kontynuować") i czeka, aż naciśniesz enter, ale następnie nie powiedzie się z SyntaxError: unexpected EOF while Parsing. Działa to dobrze w systemie z Pythonem 3, ale jest to linux Python 2.6 i nie znoszę kodować w raw_input(), ponieważ odchodzi. Jakieś sugestie?jest sposób użycia danych wejściowych ("Naciśnij dowolny klawisz, aby kontynuować") w wersji 2.6

+5

Proszę zaksięgować ** aktualny ** kod i ** rzeczywisty ** komunikaty o błędach, które ** faktycznie ** otrzymujesz. –

+0

Nie powinien to być błąd składniowy - Python 2.6 obsługuje funkcję 'input'. Czy możesz nam pokazać resztę kodu? – Smashery

+1

@masha: nadal będzie powodować błąd składni, jeśli wprowadzone wyrażenie zawiera błąd składni, na przykład po prostu naciśnij Enter – recursive

Odpowiedz

9

Użyj tego

try: 
    input= raw_input 
except NameError: 
    pass 

Jeśli raw_input istnieje, to zostanie wykorzystane do wejścia. Jeśli nie istnieje, nadal istnieje input.

+0

Podoba mi się ten. Pracował świetnie. i jest prosty – Dag

+0

+1 Chociaż myślę, że byłoby lepiej, gdyby istniał import "__future__" do tego, nie ma go, więc jest to najlepszy sposób –

3

można zrobić coś na linii ...

def myinput(prompt): 
    try: 
     return raw_input(prompt) 
    except NameError: 
     return input(prompt) 

... ale NIE.

Zamiast tego po prostu użyj raw_input() w swoim programie, a następnie użyj 2to3, aby przekonwertować plik na python 3.x. To spowoduje konwersję wszystkich raw_input() dla Ciebie i innych rzeczy, których możesz nie zauważyć.

To jest zalecany sposób, aby zachować oprogramowanie działające zarówno na pythonie 2, jak i python 3, a także zachować zdrowie psychiczne.

+0

, ale jeśli po prostu przenoszę plik między dwoma polami, nie znoszę mieć przekonwertować cały czas – Dag

+0

, więc nie ma sposobu w 2.6, aby input() działał? – Dag

+0

Nie, wykonuje on eval wejścia. Musisz zmienić sposób definiowania danych wejściowych. http://docs.python.org/library/functions.html?highlight=input#input – dcolish

1
import os 
os.sys('pause') 

Możesz używać tego modułu w systemie Windows.

Powiązane problemy