我需要用Python打开一个可写的文件句柄,然后将文件描述符交给.NET程序集中的函数(通过pythonnet's ^{
从Python file对象到win32 HANDLE*
相当简单,如this question所示:
import clr
from Microsoft.Win32.SafeHandles import SafeFileHandle
from System.IO import FileStream, FileAccess
pyf=open("c:/temp/testing123.txt","w")
fileno=pyf.fileno()
print fileno # 6
handle = msvcrt.get_osfhandle(fileno)
print handle # 1832L
According to MSDN,现在应该可以从一个直的IntPtr
(句柄)或SafeFileHandle
包装构造一个标准的FileStream
对象。在
问题是。。。如何说服clr
模块将handle
转换为IntPtr
?在
我试过以下各种版本,但都有错误:
FileStream(IntPtr(handle), True)
FileStream(IntPtr(Int64(handle), True)
FileStream(IntPtr(Int32(handle), True)
SafeFileHandle(IntPtr(handle), True)
...
=> TypeError ("value cannot be converted to System.IntPtr")
关于如何将这个该死的文件句柄放入C中有什么建议吗?在
感谢^{} mailing list 上的好心人,我得到了答案。在
关键是使用
Overloads
构造函数将win32HANDLE
强制转换为IntPtr
类型。在下面是一个完整的工作示例:
对于这个答案可能有点晚了,但是像this这样的方法有用吗?在
相关问题 更多 >
编程相关推荐