[Python.NET] Getting an open Python file handle into CLR
Dan Lenski
dlenski at gmail.com
Tue Jul 21 06:00:14 CEST 2015
Hi,
I posted this on StackOverflow but thought it might be a better question
for this mailing list.
http://stackoverflow.com/questions/31530059/how-can-i-open-a-net-
filestream-object-from-a-python-file-handle
I'm trying to figure out how to transform an open Python file handle
into a System.IO.FileStream object so that I can pass it to C# code.
Here's what I've got so far. This produces the good ol' win32 (HANDLE*)
object, I believe:
import clr, msvcrt
from Microsoft.Win32.SafeHandles import SafeFileHandle
from System.IO import FileStream, FileAccess
from System import IntPtr, Int32, Int64
pyf=open("c:/temp/testing123.txt","w")
fileno=pyf.fileno()
print fileno # 6
handle = msvcrt.get_osfhandle(fileno)
print handle # 1832L
Unfortunately, I can't figure out how to convince the clr module to cast
this handle into something that I can use as an IntPtr, as required by
the constructors of FileStream or SafeFileHandle.
I've tried various versions of the following, but they all give me
TypeError ("value cannot be converted to System.IntPtr"):
FileStream(IntPtr(handle), True)
FileStream(IntPtr(Int32(handle), True)
SafeFileHandle(IntPtr(handle), True)
Thanks,
Dan Lenski
More information about the PythonDotNet
mailing list