在Python中重建一个类Shell的解释器?

2 投票
2 回答
540 浏览
提问于 2025-04-17 03:03

在我开始动手之前,我想先来这里看看大家有没有什么建议,或者说有没有类似的东西已经做过了。

我想在一个Python程序里重新创建一个基本的命令行语法。换句话说,当人们用Python运行这个文件时,他们会看到一个小提示符。

>> 

对于简单的事情,使用一个选项解析器来处理

opt.parse_args(input.split(" "))

这样做是没问题的,但现在我想的不仅仅是用'\'字符来转义像空格这样的特殊字符,还想把用引号括起来的字符串当作一个整体参数来处理,就像在Unix命令行里那样。

有没有什么现成的工具可以帮我实现这个呢?

谢谢大家的建议! - Chase

2 个回答

4

你有没有看过标准库里的 shlex?可以看看这个 例子

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']

这个模块的作用是把内容分割成有意义的部分,也就是“标记”。不过,它不会像处理变量那样自动帮你展开内容。这些事情你还是得自己来做,包括实际执行命令。

撰写回答