Re: [Python.NET] Getting an open Python file handle into CLR

Jeffrey Bush <jeff-dLGc3k/[email protected]>
Newsgroups gmane.comp.python.dotnet
Message-ID <CALOUSf=gYgONjd3=MjP+XU0UCOQHC5nqLhRB58yhxG3MyXDWgg@mail.gmail.com>
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 <
[email protected]> 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 <[email protected]> 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 - [email protected]
> https://mail.python.org/mailman/listinfo/pythondotnet
>
>
>
> _________________________________________________
> Python.NET mailing list - [email protected]
> https://mail.python.org/mailman/listinfo/pythondotnet
>

_________________________________________________
Python.NET mailing list - [email protected]
https://mail.python.org/mailman/listinfo/pythondotnet
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.