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

Python调用read()后遍历文件对象计数为0的问题求助

问题原因

当你调用data.read()时,Python会一次性读取文件全部内容,同时文件对象的读取指针会移动到文件末尾。此时再遍历data这个文件对象,因为指针已经在末尾,没有剩余内容可读取,循环不会执行,最终count输出0。

解决方法

方法1:重新打开文件

第一次读取后指针到了末尾,重新打开文件就能让指针回到起始位置:

# 第一次读取并打印
data = open('mbox-short.txt')
dataR = data.read()
print(dataR)
data.close()  # 养成关闭文件的好习惯

# 重新打开文件进行遍历
data = open('mbox-short.txt')
count = 0
for x in data:
    count += 1
print(count)
data.close()

方法2:用seek()重置文件指针

不需要重新打开文件,调用文件对象的seek(0)方法,直接把读取指针移回文件开头:

data = open('mbox-short.txt')

dataR = data.read()
print(dataR)

data.seek(0)  # 将指针移回文件起始位置
count = 0
for x in data:
    count += 1
    
print(count)
data.close()

方法3:直接使用已读取的内容

既然已经把文件内容存在dataR里,直接对这个字符串处理更高效,不用再操作文件对象:

data = open('mbox-short.txt')
dataR = data.read()
print(dataR)

# 按换行符分割成列表后遍历计数
count = 0
for x in dataR.splitlines():
    count += 1
print(count)
data.close()

额外推荐:用with语句打开文件,它会自动帮你关闭文件,避免资源泄漏:

with open('mbox-short.txt') as data:
    dataR = data.read()
    print(dataR)

# 重新用with打开遍历
with open('mbox-short.txt') as data:
    count = 0
    for x in data:
        count += 1
    print(count)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:28:16