cmd
模塊爲創建程序的命令行界面提供了非常簡單的界面。它可能無法將一些緩衝區字符放在下一行的前面,但如果您正在尋找讓用戶知道該命令已返回的顯而易見的方式,則它可以在每個開頭處提供一個類似shell的提示線。如果你已經擁有的功能定義爲你的程序,將它們集成到處理器將編寫訪問功能的處理程序的問題:
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()
事情使用CMD
寫一個交互shell時要考慮
- do_之後的名稱是您的用戶將使用的命令,以便在此示例中,可用的命令將是hypot,退出,退出和幫助。
- 沒有覆蓋do_help,呼籲幫助會給你可用的命令
- 要退出任何通話清單如果你要處理函數調用中條目的程序應該返回True
- ,說你想能夠處理類似「hypot 3 4」的呼叫,您可以在函數調用中使用本地線路變量
爲什麼要將此作爲控制檯應用程序? (這聽起來像它可能值得另一種方法)。如果你想讓用戶在控制檯上自由移動光標,你可能想使用ncurses而不是內置方法。 –
這將運行在什麼平臺上?如果是Linux,你可以考慮使用readline模塊。 – Keith
在Windows上有一個[pyreadline](http://pypi.python.org/pypi/pyreadline)。 – Apalala