Mô-đun cmd
cung cấp giao diện rất đơn giản để tạo giao diện dòng lệnh cho chương trình của bạn. Nó có thể không thể đặt một số ký tự đệm ở phía trước của dòng tiếp theo nhưng nếu bạn đang tìm kiếm một cách rõ ràng để cho người dùng của bạn biết rằng lệnh đã trả về, nó có thể cung cấp một dấu nhắc giống như vỏ ở đầu mỗi hàng. Nếu bạn đã có chức năng định nghĩa cho chương trình của bạn, tích hợp chúng vào một bộ xử lý sẽ là một vấn đề viết một handler mà truy cập vào các chức năng:
import cmd
import math
def findHpyot(length, height):
return math.sqrt(length **2 + height **2)
class MathProcessor(cmd.Cmd):
prompt = "Math>"
def do_hypot(self, line):
x = raw_input("Length:")
y = raw_input("Height:")
if x and y:
try:
hypot = findHypot(float(x), float(y))
print "Hypot:: %.2f" %hypot
except ValueError:
print "Length and Height must be numbers"
def do_EOF(self, line):
return True
def do_exit(self, line):
return True
def do_quit(self, line):
return True
if __name__ == "__main__":
cmdProcessor = MathProcessor()
cmdProcessor.cmdloop()
Những điều cần xem xét khi viết một shell tương tác sử dụng cmd
- Tên sau do_ là lệnh mà người dùng của bạn sẽ sử dụng để trong ví dụ này, các lệnh có sẵn sẽ là hypot, exit, quit và help.
- Nếu không có trọng do_help, kêu gọi sự giúp đỡ sẽ cung cấp cho bạn một danh sách các lệnh có sẵn
- Bất kỳ cuộc gọi mà bạn muốn thoát khỏi chương trình sẽ trả về Đúng
- Nếu bạn muốn xử lý thông tin nhập từ lời gọi hàm, nói rằng bạn muốn có thể xử lý cuộc gọi như "hypot 3 4", bạn có thể sử dụng biến dòng địa phương trong hàm gọi
Tại sao làm điều này dưới dạng ứng dụng giao diện điều khiển? (Nghe có vẻ như nó có thể xứng đáng với cách tiếp cận khác). Nếu bạn muốn người dùng di chuyển con trỏ tự do xung quanh bàn điều khiển, bạn có thể muốn sử dụng ncurses thay vì chỉ các phương thức tích hợp sẵn. –
Nền tảng này sẽ chạy trên nền tảng nào? Nếu Linux, bạn có thể xem xét sử dụng mô-đun readline. – Keith
Có một [pyreadline] (http://pypi.python.org/pypi/pyreadline) hoạt động trên Windows. – Apalala