You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用循环向CSV写入多行 解决仅输出最后一行问题

问题原因

  • 你将输出文件的打开逻辑写在了行遍历的内部循环中,且使用了'w'(覆盖写入)模式打开文件:每次打开文件都会清空之前写入的所有内容,只有最后一次循环写入的行会被保留。

修复方案

最推荐的写法是把输出文件的打开操作移到循环外,全程只打开一次,依次写入所有行,性能更高也不会出现覆盖问题,修改后的代码如下:

import hashlib
import csv
d = dict()
for i in range(0 , 9999) :
    n = hashlib.sha256(str(i).encode())
    d[n.hexdigest()] = str(i)
with open('/Users/MJ-Mac/Desktop/karname.txt') as f:
    file = csv.reader(f)
    # 输出文件打开操作移到循环外,仅执行一次
    with open('/Users/MJ-Mac/Desktop/result3.txt', 'w', newline='') as f2:
        file2 = csv.writer(f2)
        for row in file :
            a = row[0]
            b = d[row[1]]
            result = (a , b)
            file2.writerow(result)

补充说明:如果一定要在循环内打开文件写入,把打开模式从'w'改成'a'(追加写入)也可以实现需求,但频繁打开关闭文件会大幅降低运行效率,不建议这么用。

内容的提问来源于stack exchange,提问作者Mohammad Jamshidof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:54:03