我有一个名为pattern.pc的文件,内容如下:
<p1> bla bla
<p2> bla bla
现在我想将<p1>
和<p2>
替换为单独文件中的一些值(比如参数_values.pc),例如p1的值位于第一行,而第二行中的p2:
1.0, 2.0, 3.0, 4.0
10.0, 11.0, 12.0, 13.0
并获取此类新文件(此处为p1 = 1.0
和p2 = 10.0
):
1.0 bla bla
10.0 bla bla
将命名为例如pattern_p1_1_p2_10.pc,依此类推。你能帮忙在python中做到吗?我忘了提到参数值之间的所有可能组合都是可以接受的 - 在这种特殊情况下,我们最后会有16个新文件。谢谢
答案 0 :(得分:1)
# assumes Python 2.7
PARAMETERS_FILE = "parameter_values.pc"
PATTERN_FILE = "pattern.pc"
OUTPUT_NAME = "pattern_p1_{p1}_p2_{p2}.pc"
def strs(line, split_on=None):
return [s.strip() for s in line.split(split_on)]
def main():
with open(PATTERN_FILE) as inf:
template = inf.read()
with open(PARAMETERS_FILE) as inf:
p1_lst = strs(next(inf, ""), ",")
p2_lst = strs(next(inf, ""), ",")
for p1, p2 in zip(p1_lst, p2_lst):
fname = OUTPUT_NAME.format(p1=p1, p2=p2)
data = template.replace("<p1>", p1).replace("<p2>", p2)
with open(fname, "w") as outf:
outf.write(data)
if __name__=="__main__":
main()
编辑:好的,如果您想要所有组合,
from itertools import product
并将for p1, p2 in zip(p1_lst, p2_lst):
替换为for p1, p2 in product(p1_lst, p2_lst):
。