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

如何实现数据逐行写入CSV?现有代码未分行问题求助

问题排查与解决:CSV数据未按预期分行显示

问题背景

需求是将统计后的每个数据单独置于CSV文件的一行一列,但运行以下代码后数据未按预期分行:

from dataclasses import field, fields
import os
import csv
import collections
y=[]
Dict_New=[]
a=['Name','Count']
d={}
path = r"C:\Users\piotr\Desktop\CV"
files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']
for x in files_file:
   y.append(x[:-4])
print(y)
Counter=collections.Counter(y)
print(Counter)
for key, values in Counter.items():
    Dict_New.append({'Name': key, "Count": values})
print(Dict_New)
with open ("test.csv",'w') as f:
    write = csv.DictWriter(f,fieldnames=a)
    write.writeheader()
    write.writerows(Dict_New)

问题排查

  1. 文件名切片逻辑错误:使用x[:-4]固定截取倒数4位前的字符串,仅适配后缀为3个字符的文件(如.txt、.jpg),但像file1这类无后缀的文件会被截取为空字符串,导致统计结果出现无效空键,直接影响CSV内容的正确性。
  2. Windows下换行符异常:打开文件时未指定newline='',在Windows系统中,csv模块自动处理换行符的逻辑会受影响,可能导致输出的CSV出现多余换行,看起来像是数据未分行。

修复方案

  1. 用os.path.splitext()替代固定切片,正确提取不含后缀的文件名。
  2. 打开CSV文件时添加newline=''参数,避免Windows系统下的换行符问题。

修复后的完整代码

import os
import csv
import collections

# 初始化变量
y = []
Dict_New = []
fieldnames = ['Name', 'Count']
path = r"C:\Users\piotr\Desktop\CV"

# 获取目录下所有文件
files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

# 正确提取文件名(不含后缀)
for x in files_file:
    filename = os.path.splitext(x)[0]
    y.append(filename)
print(y)

# 统计文件名出现次数
counter = collections.Counter(y)
print(counter)

# 转换为DictWriter需要的字典格式
for key, value in counter.items():
    Dict_New.append({'Name': key, "Count": value})
print(Dict_New)

# 写入CSV文件,指定newline=''避免Windows换行问题
with open("test.csv", 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(Dict_New)

说明

修复后,代码会正确统计每个文件名(不含后缀)的出现次数,并将每个键值对写入CSV的单独一行,完全符合需求。

内容的提问来源于stack exchange,提问作者Piotr Sycz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:45:26