簡體   English   中英

用Python編寫外殼

[英]Coding a shell in Python

我正在用Python編寫數據輸入系統的代碼,在該系統中,用戶還應該能夠提交“命令”,就像Python Shell或SAS或R接口一樣。 我想知道如何編寫shell。 例如,它應該提供一個提示(不能被用戶刪除,例如Python中的>>>提示)並接收用戶的輸入。 此外,可以說,一旦提交了條目,用戶就無法返回,就像在DOS提示符下那樣,您不能向上一行。

有人可以幫忙嗎?

cmd.Cmd類可以幫助您構建類似shell的應用程序。 同樣, cmd2是上述模塊的不錯升級。 使用這些工具,您可以構建具有命令歷史記錄,幫助菜單和智能命令解析的Shell應用程序。 不要從頭開始構建REPL,因為這些模塊可能足以滿足您的需求。

sh我用Python編寫了一個完整的sh實現,但可惜我沒有源代碼。

您的基本代碼是這樣的:

while True:
  command = raw_input('>>> ')
  print 'You entered "{command}".'.format(command = command)

但是,如果您需要比簡單的類似bash的外殼更復雜的東西,那么有一些項目可能會滿足您的需求:

  • IPython :非常堅固的外殼。 Sage和其他許多大型項目都使用了它。
  • Python的本地cmd :自我說明。 功能不是很豐富,但是它是Python shell。

您可能想研究一下readline庫(還為您提供了一些出色的功能,例如完成和歷史記錄)。 可悲的是,它僅是UNIX,就像它的基礎C庫一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM