Python:从循环中获取所有结果,而不仅仅是最后一个?

时间:2014-08-21 20:39:58

标签: python for-loop

我在python中运行循环,我希望每次打印到txt文件的结果。 但是通过运行我的代码,只打印循环最后一次的结果。 我怎样才能得到整个结果?

这是我的代码:

for tr_list in tw_table.findAll('tr'):
    for p_list in tr_list.findAll('td')[-1].findAll('p'):
        pt=p_list.get_text().encode('utf-8')
    for tag_list in tr_list.findAll('td')[0].findAll('p'):
        tagt=tag_list.get_text().encode('utf-8')
        result = tagt,pt
        result = str(result)
        f = open("output.txt","w")
        f.write(result)
        f.write('\n')
        print result

output.txt应该是多行,如:

result:
123
456
789

但事实是output.txt只有最后一行:

789

3 个答案:

答案 0 :(得分:3)

当您打开文件而不是附加模式时,其所有内容都将被清除干净。因为你在循环中打开它会丢失除最后结果之外的所有内容

    f = open("output.txt","w")
    f.write(result)
    f.write('\n')

您应该打开一次文件。完成循环并在完成后关闭它

f = open("output.txt","w")
for tr_list in tw_table.findAll('tr'):
    for p_list in tr_list.findAll('td')[-1].findAll('p'):
        pt=p_list.get_text().encode('utf-8')
    for tag_list in tr_list.findAll('td')[0].findAll('p'):
        tagt=tag_list.get_text().encode('utf-8')
        result = tagt,pt
        result = str(result)
        f.write(result)
        f.write('\n')
f.close()

答案 1 :(得分:2)

打开文件一次并在迭代时保持文件句柄处于打开状态:

with open("output.txt", "w") as f:
    for tr_list in tw_table.findAll('tr'):
        for p_list in tr_list.findAll('td')[-1].findAll('p'):
            pt = p_list.get_text().encode('utf-8')
        for tag_list in tr_list.findAll('td')[0].findAll('p'):
            tagt = tag_list.get_text().encode('utf-8')
            result = tagt, pt
            result = str(result)
            f.write(result)
            f.write('\n')
            print result

答案 2 :(得分:1)

"w"

中将"a"更改为f = open("output.txt","w")