Python使用csv模块写入CSV文件末尾出现空行如何解决?
CSV文件写入末尾多余空行解决方案
问题根因
Python内置csv模块的writerows方法会为每一行(包含最后一行)末尾追加换行符,打开文件时指定的newline=''参数仅用于解决Windows系统下换行符重复导致的空行问题,无法消除最后一行自带的换行符,因此会出现末尾多余空行的现象。
前置修正
现有代码存在笔误:edit函数中ucty[x][5]为未定义变量,需要替换为accounts[x][5],否则运行会抛出异常。
可行修改方案
你可以选择以下任意一种方案修改save函数即可解决问题:
- 方案1:先拼接所有CSV内容再一次性写入,适合字段内容无分隔符、不需要额外转义的场景
def save(): # 拼接所有行内容 all_lines = [sep.join(row) for row in accounts] # 用换行拼接后去除末尾多余换行 write_content = '\n'.join(all_lines) with open(filename, 'w', encoding='utf-8') as f: f.write(write_content)
- 方案2:拆分写入逻辑保留CSV转义规则,适合字段包含分隔符、引号等特殊字符需要严格遵循CSV格式的场景
def save(): with open(filename, 'w', newline='', encoding='utf-8') as csvfile: csvwriter = csv.writer(csvfile, delimiter=sep, quoting=csv.QUOTE_NONE) if not accounts: return # 先写入除最后一行外的所有内容 if len(accounts) > 1: csvwriter.writerows(accounts[:-1]) # 单独写入最后一行不追加换行 csvfile.write(sep.join(accounts[-1]))
内容的提问来源于stack exchange,提问作者zuiop play
相关产品推荐
相关产品推荐

