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

Python 3.6:将CSV格式数据写入含变量文件名的CSV文件遇行拆分问题

解决CSV写入每行仅显示一个字符的问题

嘿,作为Python 3.6的新手第一次提问就碰到这种细节问题太正常啦,我来帮你搞定!

问题原因

你遇到的每行只显示一个字符的情况,大概率是因为给csv.writer.writerow()方法传入了单个字符串,而不是一个包含该行数据的可迭代对象(比如列表)。writerow()会把传入的可迭代对象里的每个元素当成一列,如果你传的是字符串,它就会把字符串拆成单个字符,每个字符占一列,看起来就像是每行只有一个字符啦。

正确的写法示例

先给你补全并修正代码,顺便用更安全的方式处理路径:

首先,记得要导入os模块(你的代码里用到了os.environ,所以必须导入),然后用os.path.join拼接路径,避免转义字符或者系统路径格式的问题:

import csv
import os

# 用os.path.join更安全,自动适配系统路径分隔符
variablefilename = "test_data"  # 假设你的变量值是这个
filename = os.path.join(os.environ['USERPROFILE'], 'Downloads', 'Somefolder', f"{variablefilename}.csv")

# 用with语句管理文件,自动关闭
with open(filename, 'w', newline='', encoding='utf-8') as myfile:
    writer = csv.writer(myfile)
    # 写入表头(如果需要)
    writer.writerow(["姓名", "年龄", "城市"])
    # 写入单行数据:要把数据放在列表里
    writer.writerow(["张三", 25, "北京"])
    # 如果是单个字符串要写入一行,也要放在列表里
    single_line = "这是一行完整的文本"
    writer.writerow([single_line])

错误写法对比(为什么会出问题)

如果你之前是这么写的,就会出现每行一个字符的情况:

# 错误示例!
with open(filename, 'w', newline='') as myfile:
    writer = csv.writer(myfile)
    wrong_line = "这是错误的写法"
    writer.writerow(wrong_line)  # 直接传字符串,会被拆成单个字符

额外小提示

  • 加上encoding='utf-8'参数,避免写入中文时出现乱码问题。
  • 用f-string(Python 3.6+支持)来拼接文件名更清晰,比如f"{variablefilename}.csv"。
  • 始终用with语句操作文件,它会自动帮你关闭文件,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:31