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

CSV文件追加时出现空行问题(禁止使用Pandas)

问题解决:CSV文件生成时出现多余空行

问题原因

你的代码里用csv.writer写入文件时,未指定newline=''参数,导致Windows系统下文件默认换行处理与csv模块的换行逻辑叠加,产生额外空行。此外代码还存在导入错误:仅导入了csv.writer,却直接调用csv.reader,会触发NameError,需补上reader的导入。

修正方案

  1. 导入csv模块的writer和reader,或直接导入整个csv模块
  2. 打开写入目标文件时添加newline=''参数,让csv模块自行处理换行逻辑
  3. 优化异常处理,避免捕获无关异常;添加返回逻辑,防止文件不存在时后续代码报错

修正后的完整代码

from csv import writer, reader

def ImportFunction():
    which_file = input("Which file would you like to import?")
    
    # 验证用户指定文件是否存在
    try:
        with open(which_file, 'r') as file:
            user_file = file.read()
            print(user_file)
    except FileNotFoundError:
        print("Sorry the user file can't be found. Please try again.")
        return  # 文件不存在时直接返回,避免后续执行出错
    
    # 处理transaction_ledger.csv
    try:
        with open('transaction_ledger.csv', 'r') as file:
            file_content_transaction_ledger = file.read()
            print(file_content_transaction_ledger)
    except FileNotFoundError:
        # 文件不存在时创建并写入内容
        with open(which_file, 'r') as old_file:
            reader_obj = reader(old_file)
            
            # 关键:添加newline=''参数解决空行问题
            with open('transaction_ledger.csv', 'w', newline='') as new_file:
                writer_obj = writer(new_file, delimiter=",")
                for data in reader_obj:
                    writer_obj.writerow(data)
        print("New file created and filled in with old file data")  

ImportFunction()

with open('transaction_ledger.csv', 'r') as file:
    file_content_transaction_ledger = file.read()
    print(file_content_transaction_ledger)

说明

  • newline=''参数让csv.writer根据系统自动适配换行符,避免双重换行产生空行
  • 将裸except改为FileNotFoundError,精准捕获文件不存在的异常,便于调试
  • 补充reader导入,解决原代码潜在的NameError问题

内容的提问来源于stack exchange,提问作者Jorge Daniel Atuesta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:10:29