Python导出字典到CSV异常及添加文件名字段求助
解决CSV导出异常及添加图片文件名问题
问题根源
你代码里的zip(*res1.values())是核心问题——res1的values是两个字符串'Passed'和'Passed',zip会把每个字符串拆成单个字符逐个配对,循环输出后自然每个字母占一行。
修正后的完整代码
import os import glob # 替换成你的图片目录路径 TARGET_DIR = "你的目标目录" with open('glaresss_result.csv','wt') as f: # 生成带文件名的表头(也可以直接写固定表头:header = ['filename', 'glare', 'brightness']) sample_img = glob.glob(os.path.join(TARGET_DIR, "*.png"))[0] res1, _ = send_request_qcglare(sample_img) header = ['filename'] + list(res1.keys()) f.write(",".join(header) + "\n") for imgpath in glob.glob(os.path.join(TARGET_DIR, "*.png")): res1, res = send_request_qcglare(imgpath) # 提取图片纯文件名 filename = os.path.basename(imgpath) # 组装当前行数据 row = [filename] + list(res1.values()) # 写入CSV f.write(",".join(row) + "\n")
关键改动说明
- 新增文件名表头:在原有检测项前添加
filename字段,满足需求; - 移除错误的zip循环:直接将res1的检测结果转为列表,彻底避免字符拆分问题;
- 提取文件名:
os.path.basename(imgpath)能从完整路径中取出纯文件名(比如/home/imgs/test.png会得到test.png); - 自动管理文件:用
with语句处理文件,无需手动调用f.close(),避免资源泄漏。
预期CSV输出示例
假设处理3张图片,输出格式如下:
filename,glare,brightness test1.png,Passed,Passed test2.png,Passed,Passed test3.png,Passed,Passed
内容的提问来源于stack exchange,提问作者Ketsu
相关产品推荐
相关产品推荐

