用Python编写shell

时间:2011-11-09 16:45:22

标签: python

我正在使用Python编写数据输入系统,其中用户也应该能够提交'命令,就像Python shell一样,或者例如SAS或R接口。我想知道如何编写shell。例如,它应该提供提示(用户不能删除,例如Python中的>>>提示)并接收用户的输入。此外,一旦提交了一个条目,用户就无法返回,就像在DOS提示符中那样,你不能上线,可以这么说。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

cmd.Cmd类可以帮助您构建类似shell的应用程序。 同样,cmd2是上述模块的一个很好的升级。通过这些,您可以构建一个具有命令历史记录,帮助菜单和智能命令解析的shell应用程序。不要从头开始构建REPL,因为这些模块可能足以满足您的需求。

答案 1 :(得分:0)

我在Python中编写了一个完整的sh实现,但遗憾的是我没有源代码。

您的基本代码是:

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

但是如果你需要一些比简单的bash更复杂的东西,那么有一些项目可能适合你的需求:

  • IPython :相当坚实的外壳。它被Sage和其他一些大项目使用。
  • Python's native cmd class :自我解释。功能不是很丰富,但它是Python shell。

答案 2 :(得分:0)

您可能需要查看readline库(获取完成和历史等精彩功能)。可悲的是,它只是UNIX,就像它的底层C库一样。