我想创建一个交互式 shell 类型的应用程序。例如:
> ./app.py
Enter a command to do something. eg `create name price`.
For to get help, enter "help" (without quotes)
> create item1 10
Created "item1", cost $10
> del item1
Deleted item1
> exit
...
我当然可以使用无限循环获取用户输入,分割行以获取命令的各个部分,但是有更好的方法吗?即使在PHP(Symfony 2 控制台) http://symfony.com/doc/2.0/components/console.html例如,它们允许您创建控制台命令来帮助设置 Web 应用程序。 Python 中有类似的东西吗(我使用的是 Python 3)
Just input
循环中的命令。
为了解析输入,shlex.split http://docs.python.org/py3k/library/shlex.html#shlex.split是一个不错的选择。或者只是简单地选择str.split
.
import readline
import shlex
print('Enter a command to do something, e.g. `create name price`.')
print('To get help, enter `help`.')
while True:
cmd, *args = shlex.split(input('> '))
if cmd=='exit':
break
elif cmd=='help':
print('...')
elif cmd=='create':
name, cost = args
cost = int(cost)
# ...
print('Created "{}", cost ${}'.format(name, cost))
# ...
else:
print('Unknown command: {}'.format(cmd))
The readline http://docs.python.org/py3k/library/readline.html库添加了历史功能(向上箭头)等。 Python 交互式 shell 使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)