On 12/12/06, Travis Oliphant <[EMAIL PROTECTED]> wrote:

Tim Hirzel wrote:

>Good thought Chris,
>Normal reading and writing does seem to work. ..
>But, my friend Daniel figured out a workaround when I asked to confirm
>this behavior on his windows setup (and it is does behave the same for
>him).  The first clue was this:
>
> >>> f = tempfile.TemporaryFile()
> >>> type(f)
><type 'instance'>
> >>> g = open("temp","w+b")
> >>> type(g)
><type 'file'>
>
>so Daniel did a dir(f) and found the 'file' attribute
>
>so if you do (where 'a' is a numpy array)
> >>> a.tofile(f.file)
>It works!
>
>writing to the "file" attribute of the TemporaryFile, it works fine!  So
>that's good, but still a little hinky.  Especially since it works on
>linux...
>on a linux platform, what does type(tempfile.TemporaryFile()) return?  I
>assume an <type 'instance'>  as well...
>
>anways, so at least there is a quick repair for now.  Good news is, I
>assume using 'f.file' would work on linux too in terms of having a
>single cross-platform solution.
>
>
There is no file attribute on Linux.   On linux you get

>>> type(f)
<type 'file'>

So, you might have to do something like:

if not isinstance(f, file):
   f = f.file

before passing f to the tofile method.

It seems to me that the temporary file mechanism on Windows is a little
odd.


Looks like a tempfile bug to me. Python should be cross platform and since
the file attribute is correctly set on windows, I don't see why the tempfile
can't be made to behave correctly.

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to