如何在python中获取打开文件的win32句柄?

bde*_*dew 9 python winapi

我确定这是在某处记录但我找不到它......

我的代码是从另一个库(我无法修改)获取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
Run Code Online (Sandbox Code Playgroud)

如何将其转换为真正的win32句柄?

bde*_*dew 10

我找到了答案:

>>> msvcrt.get_osfhandle(a.fileno())
1956 # valid HANDLE
Run Code Online (Sandbox Code Playgroud)

这实际上记录在http://docs.python.org/library/msvcrt.html上,不知道我是如何错过它的.