如何在Python中获取文件的字节偏移量

3 投票
1 回答
16387 浏览
提问于 2025-04-16 03:42

我正在用Hadoop和Python制作一个倒排索引。
我想知道如何在Python中包含一行或一个单词的字节偏移量。
我需要类似这样的东西:

hello hello.txt@1124

我需要这些位置来制作一个完整的倒排索引。
请帮帮我。

1 个回答

13

像这样吗?

file.tell()

这个函数可以返回文件当前的位置,类似于标准输入输出库中的ftell()函数。

http://docs.python.org/library/stdtypes.html#file-objects

可惜的是,tell()这个函数在这里不能用,因为提问者使用的是标准输入(stdin),而不是一个文件。不过,创建一个包装函数来实现你需要的功能并不难。

class file_with_pos(object):
    def __init__(self, fp):
        self.fp = fp
        self.pos = 0
    def read(self, *args):
        data = self.fp.read(*args)
        self.pos += len(data)
        return data
    def tell(self):
        return self.pos

那么你可以用这个来代替:

fp = file_with_pos(sys.stdin)

撰写回答