从 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 代码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章