Скажем, у меня есть необработанный числовой дескриптор файла, и мне нужно получить текущую позицию в файле на его основе.
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()
возвращал только первую позицию в файле, которая не обновлялась в цикле.
Есть ли способ получить текущую позицию в реальном времени в файле на основе файлового дескриптора?
#
) - person wnnmaw   schedule 03.09.2014:D
- person VisioN   schedule 03.09.2014p.get_open_files()[1]
и т.д. - person bereal   schedule 03.09.2014