python - Python - 文件中文本字符串的字符串格式或字符串插值
问题描述
我很想创建一个 python 脚本,它遍历文件夹中的一堆文件,并用脚本中的变量替换一些格式化文本。
对于一个(非常简化的)示例,一个文件夹包含两个文件:
greeting.sql
与文字
select greeting
from greeting_list
where name = {name}
和
credentials.sql
与文字
select credentials
from credentials_list
where name = {name}
然后,python 脚本可以拉入这些文本文件,并插入脚本,将{name}
文本中的变量替换为预定义的变量,如name = 'Bob'
.
就像是
fd = open('greeting.sql', 'r')
greeting = fd.read()
fd.close()
names = ['Jeff','Melanie','Nitin','Satya','Serena']
[run_sql(greeting.format(n)) for n in names]
我通常使用插值字符串,f'Greeting for {name} is {greeting}'
所以我非常确信我在.format()
这里的使用没有意义。
此操作的重点是允许分析师更新和维护 SQL 代码,同时让 python 脚本拉入正确版本的脚本并使用各种变量运行它。
解决方案
嗯,问题很明显是我对我的.format()
知识很懒惰,因为 f-strings 似乎更容易。解决方案非常简单:
使用上面相同的greeting.sql
文件,
py_name = 'Bob'
print(greeting.format(name = py_name))
工作精美
推荐阅读
- git - git log 不显示提交的修改子模块
- dropwizard - 如何使用 dropwizard 指标进行异步回调
- operating-system - 分时系统也是多处理系统吗?
- php - passing variables by ajax to php page
- docker - sbt 原生打包器 dockerCommands 复制
- r - 在 R 中查找相似的文本
- lambda - 如何从无服务器 lambda 内部抛出错误
- amazon-web-services - 无法在 EC2 中增加 docker 卷大小
- apache-zookeeper - Zookeeper 中的 cxid 是做什么用的
- xaml - Xamarin 按钮无边框