<p>作为一种解决方法,您可以使用<a href="https://docs.python.org/3/library/io.html?highlight=stringio#io.StringIO" rel="nofollow noreferrer">^{<cd1>}</a>对象进行写入。在写入文件之前,可以对输出应用<code>rstrip()</code>:</p>
<pre><code>from io import StringIO
import csv
output = StringIO(newline='')
csvfile = csv.writer(output)
csvfile.writerow(['row'])
csvfile.writerow(['row2'])
with open('test.csv', 'w', newline='') as f_output:
f_output.write(output.getvalue().rstrip())
</code></pre>
<p>这样做的好处是保留了CSV库的全部功能。不过我还是建议你保留后面的新行。你知道吗</p>
<hr/>
<p>对于迭代方法:</p>
<pre><code>from io import StringIO
import csv
data = [['row'], ['row2']]
with open('test.csv', 'w', newline='') as f_output:
iter_data = iter(data)
next_row = next(iter_data)
csv_writer = csv.writer(f_output)
for row in iter_data:
csv_writer.writerow(next_row)
next_row = row
# Write the last row to a string to remove trailing newline
last_row = StringIO(newline='')
csv.writer(last_row).writerow(next_row)
f_output.write(last_row.getvalue().rstrip())
</code></pre>
<p>它一次将数据写入一行,然后使用<code>StringIO()</code>方法处理最后一行,以删除尾随的换行符。你知道吗</p>