在Python中获取文件描述符的位置

时间:2014-09-03 13:43:12

标签: python file ftell

说,我有一个原始数字文件描述符,我需要根据它获取文件中的当前位置。

import os, psutil

# some code that works with file
lp = lib.open('/path/to/file')

p = psutil.Process(os.getpid())
fd = p.get_open_files()[0].fd  # int

while True:
    buf = lp.read()
    if buf is None:
        break
    device.write(buf)
    print tell(fd)  # how to find where we are now in the file?

在下面的代码中,lib是一个编译库,它不提供对文件对象的访问。在循环中,我使用嵌入式方法read,它返回处理过的数据。数据及其长度与文件位置无关,因此我无法以数学方式计算偏移量。

我尝试将fdopen用作fd = fdopen(p.get_open_files()[0].fd),但print fd.tell()仅返回文件中的第一个位置,该位置未在循环中更新。

有没有办法根据文件描述符获取文件中的当前实时位置?

1 个答案:

答案 0 :(得分:1)

所以,答案似乎很容易。我不得不将os.lseekSEEK_CUR标志一起使用:

print os.lseek(fd, 0, os.SEEK_CUR)

我不知道这是否是唯一的方法,但至少它工作正常。

解释: ftell on a file descriptor?