我无法通过这个嵌套循环发现这里发生了什么。内部(for temp in temp :)循环运行很好,但外部for循环(对于范围内的cnt)只运行一次,因此temp仅附加到infile一次。
with open("temp_inv.ext") as temp:
with open(infile, 'a') as of:
for cnt in range(1, sample_cnt):
for line in temp:
l = None
if "INVERSE_MODELING" in line:
l = line.replace(smp_num[0], smp_num[cnt])
if "solutions" in line:
l = line.replace(smp_num[0], smp_num[cnt])
if "netpath" in line:
l = line.replace(smp_num[0], smp_num[cnt])
if l is None:
of.write(line)
else: of.write(l)
我已经检查过'sample_cnt'是一个整数,'smp_num'是一个有效的数组。
我错过了什么?
编辑:
澄清其他想要使用类似方法的人 -
我想通过改变基于'smp_num'数组的字符串来修改'temp'之后将'temp'追加到'of'。添加{temp.seek(0)}回答了我的问题,我错过了外循环仍在{with}语句中,因此需要在再次运行之前进行搜索。
答案 0 :(得分:4)
一旦读完所有行,就需要使用seek()来回放文件。使用
temp.seek(0)
外圈的某个地方