从 Python 中解析 Python 代码? [关闭]

Posted

技术标签:

【中文标题】从 Python 中解析 Python 代码? [关闭]【英文标题】:Parsing Python Code From Within Python? [closed] 【发布时间】:2010-12-31 00:20:34 【问题描述】:

我们有一个旧的 C++ 工具,可以自动生成一些 python 代码。今天,我试图通过 C++ 源工具苦苦挣扎,并且非常想拍摄自己的照片。这就是我想要做的,清理工具创建的源代码,并通过添加 sphinx 标签将类链接到我们的内部文档系统。

现在我想知道是否有一些很棒的工具可以在 python 中解析 python 代码?

有很多这样的东西:

foo._methods_.append()

Snip 500 lines

foo._methods_.append()

有什么建议吗?

基本上我有一个功能强大但非常混乱的代码结构,我基本上想提取某些块,将它们移动到自己的文件中。并清理所有创建的杂项。

我查看了解析器和 AST 的 quickyl,但我找不到任何使用它的真实示例。

【问题讨论】:

【参考方案1】:

您可以使用tokenize 模块对python 代码进行标记以解析单个标记。例如Script to remove Python comments/docstrings

或者你可以使用parser 模块

或使用ast 模块

【讨论】:

@TankorSmash 谢谢,固定链接。 这帮助我理解了 python 是如何被解释的。它给了我进一步研究它所需的词汇。谢谢【参考方案2】:

尝试使用 Python 文档生成实用程序之一,看看这是否可以帮助您解决整体问题。我使用 epydoc 取得了巨大成功。

或者,如果您可以让您的老板花 200 美元,请从 SparxSystems 购买 Enterprise Architect 的副本。它将对您的 Python 代码进行逆向工程,生成类图,并允许您单击类图并查看底层代码。适用于除 Python 之外的多种语言,以及出色的设计和文档实用程序。 (有一个 99 美元的版本,但这不包括代码导入功能。)

【讨论】:

【参考方案3】:

根据您的需要,您可能还想查看2to3 库。它是为了自动促进 Python 2.x 应用程序到 Python 3.0 的转换而编写的,因此它的主要用例是获取一个 Python 源文件,对其执行一些转换,然后输出结果源文件。

lib2to3 相对于 ast 模块的一个好处是 ast 不保留空格和 cmets,而 lib2to3 可以。如果您已经在处理自动生成的代码,这对您来说可能不是问题。

【讨论】:

以上是关于从 Python 中解析 Python 代码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python:我无法从函数中的标准输入解析 csv

使用python解析C代码

Python解析器

在 Python 和 AngularJS 中解析 JSON

Python 解析 JSON 数组

Python 获取接口数据,解析JSON,写入文件