Say, I have a raw numeric file descriptor and I need to get the current position in file based on it.
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?
In the following code lib
is a compiled library, that doesn't give access to the file object. In the loop I use the embedded method read
which returns the processed data. The data and it's length doesn't relate to the file position, so I can't calculate the offset mathematically.
I tried to use fdopen
, as fd = fdopen(p.get_open_files()[0].fd)
, but print fd.tell()
returned only the first position in the file, which was not updating in the loop.
Is there a way to get the current real time position in a file based on file descriptor?