2013-03-14 10 views
6

Piszę program w Pythonie, w którym użytkownik ma pracować z programem przy użyciu wiersza polecenia. Używam raw_input, aby uzyskać polecenie od użytkownika. Chcę mieć "pamięć" jak w bashu, itd., Więc jeśli naciśniesz strzałkę (w górę lub w dół) na klawiaturze, otrzymasz poprzednie/następne polecenie. Znam jeden sposób to zrobić (po prostu dostać każdy char wpisywanych przez użytkownika i sprawdź to), ale może wiesz coś lepszego/ładniejsza :-)wiersz poleceń w python z historią

pozdrowienia

+0

Dlaczego nie umieścić wszystkich danych wejściowych użytkownika na liście i śledzenie indeksu polecenia? Coś jak, jeśli naciśnie strzałkę w górę, zmniejsza indeks poleceń (więc pobieramy poprzednie polecenie), a w dół zwiększa indeks poleceń. – thegrinner

Odpowiedz

11

Jeśli dobrze rozumiem, co chcesz, możesz osiągnąć to po prostu importując moduł readline. Spowoduje to modyfikację zachowania raw_input(), dzięki czemu zachowa się bardziej jak powłoka interaktywna Pythona pod względem historii i edycji wiersza.

Bądź jednak ostrożny, to można zbudować Pythona bez readline więc sugeruję importowania go wewnątrz bloku try:

try: 
    import readline 
except: 
    pass #readline not available 
+0

Tak, właśnie tego chciałem, dzięki! – sokoli

Powiązane problemy