我敢肯定,这是记录在某处,但我找不到它...如何在python中获得打开文件的win32句柄?
我的代码是从另一个库(我不能修改)获取python对象,我需要调用一些win32 API函数就可以了。
Python从file.fileno()返回的不是os级别的句柄,我的猜测是它提供了MSVCRT的fileno。
>>> ctypes.windll.kernel32.CreateFileA('test',0x80000000L,1,None,3,0,0)
1948 # <- HANDLE
>>> file('test','r').fileno()
4 # <- not a HANDLE
如何将其转换为真正的win32句柄?
这似乎是一种做事的方法。我建议使用CreateFile方法,因为您可以完全控制传递给CreateFile的参数,并且它通常是获取句柄的正确方法。你也可以用win32file来代替(而不是ctypes)。 – Grim 2011-05-26 08:43:08
它可能是hackish,但我不能做CreateFile()我自己,因为我从不在我的控制下的代码获取python文件对象。 – bdew 2011-05-26 08:50:56