使用Python f字符串有效生成Python代码吗?

时间:2019-03-27 14:40:16

标签: python python-3.x code-generation

我还没有发现任何相关问题或使用f字符串生成Python代码的Python代码示例。我应该知道一个潜在的问题吗? f弦真的很方便,而且似乎可以满足我的需求。

我正在生成一些可在命令行中使用的python脚本,用于自动处理具有遥感图像的文件夹。我本来要手工手工编写一些文件,但意识到通过将有关表达式的元数据外化来实现该过程相对容易。

程序逻辑:

  • 提取表达式,这些表达式包含有关可以对图像执行的不同类型计算的信息(任何类型的遥感指标)
  • 遍历表达式
  • 使用表达式名称(和其他标准)创建文件
  • 将表达式信息插入f字符串
  • 编写f字符串以创建文件

一旦确定要使用的方法,我还将自动生成一些测试。 f字符串不能有效处理代码是否存在限制?

有人讨论了使用Jinja2之类的Python模板。但是,如果f字符串足够,我不希望集成另一个外部依赖项。

ALTER TABLE [dbo].EmailTB ADD  CONSTRAINT [DF_Email_CustomerID]  
DEFAULT (NEXT VALUE FOR dbo.CustomersSeq) FOR CustomersID
GO

ALTER TABLE [dbo].PhoneTB ADD  CONSTRAINT [DF_Phone_CustomerID]  
DEFAULT (NEXT VALUE FOR dbo.CustomersSeq) FOR CustomersID
GO

我可能只是过于谨慎,但我认为该主题也可以解决其他应用程序。

关于使用f字符串进行Python代码生成或其他工具的其他提示吗?

1 个答案:

答案 0 :(得分:0)

如果您遇到此问题,请务必检查程序的设计。

您极有可能尝试实施违反DRY原则的解决方案。

对于命令行应用程序:

与其生成许多特定命令,不如传递一个名称参数,该名称参数又可以与选择的参数一起使用。

在标准库中,一些有用的工具是from xmlrpc.client import ServerProxy client = ServerProxy("http://localhost:8282" print(client.hello("me")) # OK # Trying to set the web engine's html content: print(client.set_minibuffer("me") # fails --- starting server… 127.0.0.1 - - [27/Mar/2019 16:52:01] "POST /RPC2 HTTP/1.1" 200 - Received signal 11 SEGV_MAPERR 000000000000 #0 0x7f9b5bf3e8bf <unknown> #1 0x7f9b5bf3ecbb <unknown> #2 0x7f9b5bf3f33e <unknown> #3 0x7f9b6667ef20 <unknown> #4 0x7f9b5b9f3515 <unknown> #5 0x7f9b5b9f37eb <unknown> #6 0x7f9b5b9f3b79 <unknown> #7 0x7f9b5a4731c0 QtWebEngineCore::WebContentsAdapter::setContent() #8 0x7f9b610c7bf5 QWebEnginePage::setHtml() #9 0x7f9b612fb824 meth_QWebEngineView_setHtml #10 0x0000005030d5 <unknown> #11 0x000000506859 _PyEval_EvalFrameDefault #12 0x000000504c28 <unknown> #13 0x00000058644b <unknown> #14 0x00000059ebbe PyObject_Call #15 0x000000507c17 _PyEval_EvalFrameDefault […] configparsershlexcmd。请参阅这些工具的标准库文档。

Click是一个有趣的第三方程序包。

感谢@SergeBallesta的有用评论。