python - 如何找出文件是否位于 `eof` ?

标签 python file eof

fp = open("a.txt")
#do many things with fp

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

除了上面的方法,还有什么方法可以判断fp是否已经在eof了?

最佳答案

fp.read() 读取到文件末尾,因此在成功完成后,您知道文件在 EOF;没有必要检查。如果它无法到达 EOF,它将引发异常。

当以 block 的形式而不是使用 read() 读取文件时,您知道当 read 返回的字节数少于您请求的字节数时,您遇到了 EOF。在这种情况下,下面的 read 调用将返回空字符串(不是 None)。以下循环以 block 的形式读取文件;它最多调用一次 read

assert n > 0
while True:
    chunk = fp.read(n)
    if chunk == '':
        break
    process(chunk)

或者,更短:

for chunk in iter(lambda: fp.read(n), ''):
    process(chunk)

关于python - 如何找出文件是否位于 `eof` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140281/

相关文章:

python - 如何使用 python 在discord.py 上制作排行榜命令?

Python pandas 数据框删除索引名称不出现在其他数据框中的行

c - 将文件中的数据存储到结构数组中

c - 如何在 linux 中不打开一个文件两次?

c++ - 清除 eof 位不适用于 while 循环

c++ - 在读/写 fstream 上查找/写入某个位置时自动扩展文件大小

bash - 意外的 EOF?

python - 获取 ndb 模型实例的属性,其中 Python 名称!= 数据存储名称

python - 使用 fuzzywuzzy 在 python 中的单个大型 df 中查找相似名称

c - POSIX 文件描述符和 C 文件的交互