Скажем, у меня есть необработанный дескриптор числовых файлов, и мне нужно получить текущую позицию в файле на основе этого.Получить позицию для дескриптора файла в Python
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()
вернул только первую позицию в файле, которая не обновлялась в цикле.
Есть ли способ получить текущую позицию в реальном времени в файле на основе дескриптора файла?
Я думаю, вы немного запутался ваши комментарии;) (должен быть '' '#' '') – wnnmaw
@wnnmaw Да, проклят C ': D' – VisioN
Могущество его в случае, если файл, который вы читаете, не является первым открытым этим процессом, и это похоже на 'p.get_open_files() [1]' и т. д. – bereal