2013-03-14 7 views
6

Tôi đang viết chương trình bằng python trong đó người dùng làm việc với chương trình bằng dòng lệnh. Tôi đang sử dụng raw_input để nhận lệnh từ người dùng. Tôi muốn có "bộ nhớ" như trong bash, vv, vì vậy, nếu bạn nhấn một mũi tên (lên hoặc xuống) trên bàn phím của bạn, bạn nhận được lệnh trước đó/tiếp theo. Tôi biết về một trong những cách để làm điều đó (chỉ cần có được tất cả các char đánh máy bằng cách sử dụng và kiểm tra xem nó), nhưng có lẽ bạn biết điều gì đó tốt hơn/dễ thương :-)dòng lệnh trong python với lịch sử

lời chào

+0

Tại sao không đặt tất cả dữ liệu nhập của người dùng vào danh sách và theo dõi chỉ mục lệnh? Một cái gì đó giống như, nếu họ nhấn mũi tên lên nó sẽ giảm chỉ số lệnh (vì vậy chúng tôi lấy lệnh trước đó) và xuống sẽ tăng chỉ số lệnh. – thegrinner

Trả lời

11

Nếu tôi hiểu những gì bạn muốn, bạn có thể đạt được nó chỉ đơn giản bằng cách nhập mô-đun readline. Điều này sẽ thay đổi hành vi của raw_input() để nó hoạt động giống như vỏ tương tác python về mặt lịch sử và chỉnh sửa dòng.

Hãy cẩn thận mặc dù, nó có thể để xây dựng python mà không readline vì vậy tôi muốn đề nghị nhập khẩu nó bên trong một khối try:

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

yep, đó là chính xác những gì tôi muốn, cảm ơn! – sokoli