【问题标题】:What are the modules supported by python to generate a c code?python支持哪些模块来生成c代码?
【发布时间】:2018-05-13 08:56:28
【问题描述】:

python 中是否有任何特定模块提供 c 文件的生成并写入该 c 文件?目前我正在用 python 解析一个 xml 文件,我想使用解析的信息将所需的数据结构从 python 脚本创建到 c 文件中。 例如,我从链接https://www.codeproject.com/Articles/571645/Really-simple-Cplusplus-code-generation-in-Python 中看到了一个参考。有没有类似的c代码生成模块??

【问题讨论】:

  • 你可能想看看cython.org
  • 你看过Cython吗?您是否需要一个可以帮助您编写 C 代码的模块?

标签: python c module


【解决方案1】:

根据您的描述,您只需要生成一个将在您自己的项目中使用的源代码文件。

您不需要任何特殊的 Python 库来执行此操作。 您提供的链接文章对于硬编码为 Python 代码的每一行的 C++ 字符串没有什么特别之处,它会线性生成代码的所有部分:那篇关于“创建 C++”文件的文章没有什么特别之处——只要放你想要的在您的最终文件中的字符串中,您可以使用字符串格式方法或新的 f 字符串来放置数据值。

但是,如果您想要一个好的且可维护的解决方案,您可以使用 Python 的模板库,例如 "jinja2"。一旦你有了你想要的 C 文件的 jinja2 模板,你需要做的就是调用 Jinja 的渲染方法,将你想要的自定义数据传递到最终文件中,并将结果保存到文件中。

不过,这并不是针对 C 语言的,而是关于使用您拥有的数据创建一个结构化文本文件,而 Jinja 是一个很好的工具。

人们都在提到“Cython”:Cython 是一种将类似 Python 的代码转换为 C 的解决方案 - 也就是说,如果您希望用 Python 编写的程序成为 C 程序。 (虽然很少这样使用 - 通常 C 生成和构建步骤是透明的,使用 Cython 时只关心最终的可执行程序或模块。)

根据我对您问题的阅读,Cython 不是您目前想要的。

【讨论】:

  • 非常感谢您的反馈,是的,现在我不想要 cython。我正在尝试构建的应用程序非常简单。我很着迷于使用模块(codegen),就像我想创建一个 c 文件所附的链接中一样。我一直在寻找等效的功能。是的,正常的文件操作始终可用于硬编码。
  • 看看 jinja - 我认为它可以为所欲为。你链接的那个 CodeGen 东西实际上看起来很糟糕。
  • 哈哈!!即使我一开始看到那个模块也很惊讶。无论如何,非常感谢。我会试试 Jinja :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2012-05-27
  • 2010-09-22
  • 2012-07-06
  • 2018-06-01
相关资源
最近更新 更多