首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何判断文件是否处于`eof`位置?

如何判断文件是否处于`eof`位置?
EN

Stack Overflow用户
提问于 2012-04-13 19:52:09
回答 16查看 420.8K关注 0票数 79
代码语言:javascript
复制
fp = open("a.txt")
#do many things with fp

c = fp.read()
if c is None:
    print 'fp is at the eof'

除了上面的方法之外,还有没有其他方法来确定fp是否已经在eof?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2012-04-13 19:55:05

fp.read()一直读到文件的末尾,所以在它成功完成之后,您就知道文件是EOF的;不需要检查。如果它不能到达EOF,它将引发一个异常。

当按块而不是使用read()读取文件时,当read返回的字节数少于请求的字节数时,您就知道命中了EOF。在这种情况下,下面的read调用将返回空字符串(不是None)。下面的循环以块为单位读取文件;它最多只能调用一次read

代码语言:javascript
复制
assert n > 0
while True:
    chunk = fp.read(n)
    if chunk == '':
        break
    process(chunk)

或者,简称:

代码语言:javascript
复制
for chunk in iter(lambda: fp.read(n), ''):
    process(chunk)
票数 77
EN

Stack Overflow用户

发布于 2016-06-16 17:51:09

因为python在EOF上返回空字符串,而不是"EOF“本身,所以您可以检查它的代码,编写在这里

代码语言:javascript
复制
f1 = open("sample.txt")

while True:
    line = f1.readline()
    print line
    if ("" == line):
        print "file finished"
        break;
票数 20
EN

Stack Overflow用户

发布于 2014-08-01 09:39:13

执行二进制I/O时,以下方法非常有用:

代码语言:javascript
复制
while f.read(1):
    f.seek(-1,1)
    # whatever

这样做的好处是,有时您正在处理二进制流,而事先并不知道需要读取多少内容。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10140281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档