为何我的脚本无法将所有结果写入文件?技术咨询
问题原因
你每次循环里用open('stars.txt', 'w')打开文件,'w'是写入模式,这个模式的特性是:打开文件时会直接清空原有内容,然后写入新数据。所以每循环一次,之前写入的内容就被清空了,最后自然只剩最后一条数据。
解决方案
推荐两种处理方式:
方式一:把文件操作放在循环外(效率更高)
用with语句自动管理文件打开和关闭,只打开一次文件,循环写入所有内容:
with open('stars.txt', 'w') as sourceFile: for star in Constellation_data(starDf.values.tolist()): print(star) print(star, file=sourceFile)
with语句会在代码块结束后自动关闭文件,比手动调用close()更安全,也避免了重复打开关闭的开销。
方式二:改用追加模式打开文件
如果必须在循环内打开文件,把打开模式改成'a'(追加模式),这个模式不会清空原有内容,新数据会追加到文件末尾:
for star in Constellation_data(starDf.values.tolist()): print(star) with open('stars.txt', 'a') as sourceFile: print(star, file=sourceFile)
不过这种方式每次循环都要打开关闭文件,效率比第一种低,更推荐第一种方案。
内容的提问来源于stack exchange,提问作者SkyeBoniwell
相关产品推荐
相关产品推荐

