<p>您的问题是以<code>w</code>模式打开循环中的输出文件,这意味着每次迭代都会删除它。您可以通过两种方式轻松解决:</p>
<ol>
<li><p>将<code>open</code>置于循环之外(正常方式)。您将只打开一次文件,在每次迭代中添加一行,并在退出<code>with</code>块时关闭它:</p>
<pre><code>with open('contraction_counts.csv','w',newline='') as fp:
a = csv.writer(fp,delimiter = ',')
for l in every_link_test:
content_1 = processURL_short(l)
for word in content_1.split():
word = word.strip(p)
if word in contractions:
count = count + 1
splitlink = l.split("/")
president = splitlink[4]
speech_num = splitlink[-1]
filename = "{0}_{1}".format(president,speech_num)
data[filename] = count
print count, filename
a.writerows(data)
</code></pre></li>
<li><p>以<code>a</code>(append)模式打开文件。每次迭代时,您都要重新打开文件并在末尾写入,而不是将其删除-由于打开/关闭,这种方式会使用更多的IO资源,并且只有在程序可能中断并且您希望确保在崩溃之前写入的所有内容都已实际保存到磁盘上时才使用</p>
<pre><code>for l in every_link_test:
content_1 = processURL_short(l)
for word in content_1.split():
word = word.strip(p)
if word in contractions:
count = count + 1
splitlink = l.split("/")
president = splitlink[4]
speech_num = splitlink[-1]
filename = "{0}_{1}".format(president,speech_num)
data[filename] = count
print count, filename
with open('contraction_counts.csv','a',newline='') as fp:
a = csv.writer(fp,delimiter = ',')
a.writerows(data)
</code></pre></li>
</ol>