tell() 返回什么?如何用它计算已读文件的百分比?

1 投票
1 回答
1309 浏览
提问于 2025-04-17 15:47

我在Windows上使用Python 2.7,而且我对Python还很陌生,所以如果这个问题很简单,请多包涵。

我看到的所有资料都说,tell()这个函数会返回“位置”,我理解这个位置就是我们在读取文件时光标当前所在的位置。听起来很有用,但我就是搞不清楚怎么找到文件的总“位置”,这样才能计算出百分比。

1 个回答

4

你可以先把文件指针移动到文件的末尾,然后调用 .tell() 来获取当前位置:

import os

fileobj.seek(0, os.SEEK_END)
size = fileobj.tell()
fileobj.seek(0, os.SEEK_SET)

上面的例子使用了 os.SEEK_* 常量 来设置如何理解移动的偏移量(也就是 .seek() 的第一个参数)。

另外,你也可以使用 os.fstat() 函数 来获取你打开的文件的大小:

import os

size = os.fstat(fileobj.fileno()).st_size

后者的信息通常可以被操作系统更容易地缓存,所以通常会更快。

撰写回答