Python 3中csv.DictWriter生成0字节空白CSV文件问题求助
解决Python 3生成空白CSV文件的问题
嘿,我帮你揪出问题根源啦!你代码里的文件打开模式用错了——在Python 3中使用csv模块时,绝对不能用二进制模式'wb',得换成文本模式,还要加上newline=''参数来保证换行符的正确处理,这就是你生成0字节空白文件的核心原因。
修正后的代码
import csv # 确保self.SALES_SHEET是正确的文件路径 with open(self.SALES_SHEET, 'w', newline='', encoding='utf-8') as sf: fieldnames = ['first_name','last_name'] writer = csv.DictWriter(sf, fieldnames=fieldnames) writer.writeheader() writer.writerow({'first_name': 'Zach' ,'last_name': 'B'})
关键修改点说明
- 把
'wb'改成'w':Python 3的csv模块是基于文本流设计的,二进制模式会打乱它的写入逻辑,直接导致内容无法正确写入文件。 - 添加
newline='':这个参数让csv模块自行处理换行符,既能避免OS X(\n)和其他系统的换行符冲突,也能防止Excel读取时出现异常。 - 可选的
encoding='utf-8':明确指定编码能避免字符乱码问题,尤其适合用Excel打开文件的场景。
额外排查建议
如果修改后还是生成空白文件,可以检查这两点:
- 确认
self.SALES_SHEET的路径是否正确,以及你有没有该目录的写入权限(比如OS X的系统目录可能需要额外权限)。 - 给代码加上异常捕获,看看有没有隐藏错误:
try: with open(self.SALES_SHEET, 'w', newline='', encoding='utf-8') as sf: fieldnames = ['first_name','last_name'] writer = csv.DictWriter(sf, fieldnames=fieldnames) writer.writeheader() writer.writerow({'first_name': 'Zach' ,'last_name': 'B'}) except Exception as e: print(f"写入出错啦:{e}")
内容的提问来源于stack exchange,提问作者Sleepy-Z
相关产品推荐
相关产品推荐

