在Python中重建一个类Shell的解释器?
在我开始动手之前,我想先来这里看看大家有没有什么建议,或者说有没有类似的东西已经做过了。
我想在一个Python程序里重新创建一个基本的命令行语法。换句话说,当人们用Python运行这个文件时,他们会看到一个小提示符。
>>
对于简单的事情,使用一个选项解析器来处理
opt.parse_args(input.split(" "))
这样做是没问题的,但现在我想的不仅仅是用'\'字符来转义像空格这样的特殊字符,还想把用引号括起来的字符串当作一个整体参数来处理,就像在Unix命令行里那样。
有没有什么现成的工具可以帮我实现这个呢?
谢谢大家的建议! - Chase
2 个回答
15
首先,我们来看看 shlex
模块:
$ pydoc shlex
Help on module shlex:
NAME
shlex - A lexical analyzer class for simple shell-like syntaxes.
你可以这样使用它:
>> import shlex
>> shlex.split('This "is a" test.')
['This', 'is a', 'test']
这个模块的作用是把内容分割成有意义的部分,也就是“标记”。不过,它不会像处理变量那样自动帮你展开内容。这些事情你还是得自己来做,包括实际执行命令。