【发布时间】:2021-06-02 10:51:16
【问题描述】:
我有一个 sql 查询 txt 文件,我想附加到(在顶部)。
我要添加的项目来自这个 yml 文件:
data:
START_DT: '202001'
END_DT: '202104'
我在我的 python 脚本中调用这个 yml 文件:
import yaml
with open("data.yml", "r") as ymlfile:
cfg = yaml.load(ymlfile)
我的 sql 文件的顶部是:
set START_DT='202001';
set END_DT='202104';
我想更改 sql 文件的顶部,以便配置 yaml 文件中用于 strt 日期和结束日期的任何内容都会更改 sql 查询中 start_dt、end_dt 的值。如何在仅使用配置中的值的同时替换每个变量(str 日期、结束日期)的 SET 之后的值?
如果我无法替换 START_DT 之后的值,那么另一种选择是删除 SET 语句并使用 config.yml 变量从头开始重写,但如果我使用这种方式,我该如何制作日期字符串 和我怎样才能将它附加到 sql 文件的顶部或创建一个新的 tmp 文件?:
for k,v in cfg['data'].items():
print("SET" ,str(k)+':'+ v)
prints:
SET START_DT:201901
SET END_DT:202104
但日期不在“'”中,我更喜欢:SET START_DT:'201901'。同样,如果是 txtfile/sql 文件,我不确定如何将上述打印语句附加到顶部。
有什么建议吗?
【问题讨论】:
-
采用从头开始重写的方法。它是安全的。您不能在顶部附加。那将是 prepend 并且不适用于文件。这就是为什么它被称为 append 到文件。
-
我说的是第二种方法,我不确定如何用我的打印数据附加到文件的顶部
-
不,它没有。
-
for k,v in cfg['data].items(): with open ('data.sql', 'a') as f: f.write(("SET" ,k+' :'+ str(v)) 不起作用
标签: python parsing yaml config configparser