The problem is the conversion from a Python long to a C# number, not anything to do with the file handle itself.
This worked for me: (after your "print handle") cs_handle = IntPtr.Overloads[Int64](Int64(handle)) fs = FileStream(cs_handle, True) Jeff On Mon, Jul 20, 2015 at 9:19 PM, Ron Harding via PythonDotNet < pythondotnet@python.org> wrote: > perhaps re-directed command line calls for stdin, stdout, stderr in c# > interacting with python i/o command line calls(although in python it is > common practice to daisy chain commands). > > i have used this many times to get out of scrapes for 3rd party process > calls in c#. > > good luck! > > Ron > > “The desire that guides me in all I do is the desire to harness the forces > of nature to the service of mankind. > > ”Nikola Tesla“Radio Power Will Revolutionize the World” (Modern Mechanix & > Inventions, July, 1934) > > > > On Monday, July 20, 2015 9:05 PM, Dan Lenski <dlen...@gmail.com> wrote: > > > 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 > > _________________________________________________ > Python.NET mailing list - PythonDotNet@python.org > https://mail.python.org/mailman/listinfo/pythondotnet > > > > _________________________________________________ > Python.NET mailing list - PythonDotNet@python.org > https://mail.python.org/mailman/listinfo/pythondotnet >
_________________________________________________ Python.NET mailing list - PythonDotNet@python.org https://mail.python.org/mailman/listinfo/pythondotnet