Get position for file descriptor in Python

匿名 (未验证) 提交于 2019-12-03 08:48:34

问题:

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?

回答1:

So, the answer seems to be quite easy. I had to use os.lseek with SEEK_CUR flag:

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

I don't know if it is the only approach, but at least it works fine.

INTERPRETED: ftell on a file descriptor?



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!