python取地址符,在Python中获取文件描述符的位置

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?

解决方案

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值