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

Python 3.5中csv.reader读取Excel CSV文件无返回结果求助

为什么csv.reader读取Excel格式CSV时没有返回内容?

我来帮你排查这个问题,你遇到的情况其实挺常见的,咱们一步步拆解可能的原因:

1. 你可能只是创建了reader对象,但没有迭代它

csv.reader返回的是一个迭代器对象,它不会主动加载所有数据,必须通过遍历(比如for循环)才能获取内容。如果你的代码只停留在创建reader这一步,自然看不到任何输出。

试试补充遍历逻辑:

import csv

with open('test.csv') as f:
    reader = csv.reader(f, dialect='excel')
    # 必须迭代reader才能拿到数据
    for row in reader:
        print(row)

2. 文件编码不匹配导致读取异常

虽然open函数返回正常,但如果CSV文件的编码和你默认打开的编码不一致(比如Windows下常见的GBK、带BOM的UTF-8),会导致reader无法解析内容。

可以尝试指定编码打开文件:

# 处理带BOM的UTF-8格式
with open('test.csv', encoding='utf-8-sig') as f:
    reader = csv.reader(f, dialect='excel')
    for row in reader:
        print(row)

如果是GBK编码的文件,把encoding改成gbk试试。

3. dialect参数和实际文件格式不匹配

虽然你指定了dialect='excel',但有些CSV文件的分隔符、换行符可能和Excel默认的CSV规范有差异(比如用分号代替逗号分隔)。

可以手动明确指定分隔符和引号字符:

reader = csv.reader(f, delimiter=',', quotechar='"')

先确认你的文件确实是用逗号分隔的,如果不是,把delimiter改成对应的符号即可。

4. 文件指针位置异常

如果在创建reader之前,你对文件对象做过读取操作(比如f.read()),文件指针会跳到文件末尾,这时候reader就读不到任何内容了。

可以重置文件指针到开头:

with open('test.csv') as f:
    # 重置指针到文件起始位置
    f.seek(0)
    reader = csv.reader(f, dialect='excel')
    for row in reader:
        print(row)

最优先排查的应该是第一个原因——有没有迭代reader对象,大部分情况下都是这个问题导致的。如果试过之后还是不行,再依次检查编码和格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:33:59