我在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
答案 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")