使用 Python f 字符串对生成 Python 代码有效吗?
Is using Python f-strings effective for generating Python code?
我没有找到任何相关问题或 Python 代码使用 f 字符串生成 Python 代码的示例。是否存在我应该了解的潜在问题? f-strings 真的很方便,而且似乎对我的需要相当有效。
我正在生成一些 python 脚本,可以在命令行中使用这些脚本自动处理带有遥感图像的文件夹。我打算手动编写一些文件,但意识到通过外部化有关表达式的元数据来自动化该过程相对容易。
程序逻辑:
- 提取包含有关可对图像执行的不同类型计算的信息的表达式(任何类型的遥感指数)
- 遍历表达式
- 使用表达式名称(和其他标准)创建文件
- 将表达式信息插入 f 字符串
- 写入 f 字符串以创建文件
一旦确定要使用的方法,我也会自动生成一些测试。是否存在 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 原则的解决方案。
对于命令行应用程序:
与其生成许多特定的命令,不如考虑传递一个名称参数,该名称参数又可以与一系列参数一起使用。
在标准库中,一些可能有用的工具是 configparser
、shlex
、cmd
、getopt
和 argparse
。请参阅有关这些工具的标准库文档。
Click 是一个有趣的第三方包。
感谢@SergeBallesta 的有用评论。
我没有找到任何相关问题或 Python 代码使用 f 字符串生成 Python 代码的示例。是否存在我应该了解的潜在问题? f-strings 真的很方便,而且似乎对我的需要相当有效。
我正在生成一些 python 脚本,可以在命令行中使用这些脚本自动处理带有遥感图像的文件夹。我打算手动编写一些文件,但意识到通过外部化有关表达式的元数据来自动化该过程相对容易。
程序逻辑:
- 提取包含有关可对图像执行的不同类型计算的信息的表达式(任何类型的遥感指数)
- 遍历表达式
- 使用表达式名称(和其他标准)创建文件
- 将表达式信息插入 f 字符串
- 写入 f 字符串以创建文件
一旦确定要使用的方法,我也会自动生成一些测试。是否存在 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 原则的解决方案。
对于命令行应用程序:
与其生成许多特定的命令,不如考虑传递一个名称参数,该名称参数又可以与一系列参数一起使用。
在标准库中,一些可能有用的工具是 configparser
、shlex
、cmd
、getopt
和 argparse
。请参阅有关这些工具的标准库文档。
Click 是一个有趣的第三方包。
感谢@SergeBallesta 的有用评论。