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

Is using Python f-strings effective for generating Python code?

我没有找到任何相关问题或 Python 代码使用 f 字符串生成 Python 代码的示例。是否存在我应该了解的潜在问题? f-strings 真的很方便,而且似乎对我的需要相当有效。

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

程序逻辑:

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

有些人讨论过使用 Python 模板,例如 Jinja2。但是,如果 f-strings 足够了,我不希望集成另一个外部依赖项。

from expressions_meta import expressions

for key in expressions.keys():
    file_name = '_'.join([key, 'dir', 'cl.py'])

    with open(file_name, 'w') as f:

        f.write(f"""
import sys
import getopt

from gdal_dir_calc import GDALDirCalc

expression = {expressions[key]}

band_meta = {{}}

[...]

gdal_dir_obj.main()
""")

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

关于将 f 字符串用于 Python 代码生成或其他工具的任何其他提示?

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

很可能您正在尝试实施违反 DRY 原则的解决方案。

对于命令行应用程序:

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

在标准库中,一些可能有用的工具是 configparsershlexcmdgetoptargparse。请参阅有关这些工具的标准库文档。

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

感谢@SergeBallesta 的有用评论。