On Tue, Apr 5, 2011 at 8:12 AM, Charles R Harris
<charlesr.har...@gmail.com>wrote:

>
>
> On Mon, Apr 4, 2011 at 11:22 PM, Chris Barker <chris.bar...@noaa.gov>wrote:
>
>> On 4/4/11 9:03 PM, josef.p...@gmail.com wrote:
>> > On Mon, Apr 4, 2011 at 11:42 PM, Charles R Harris
>>
>> >>>    File "/sw/lib/python2.4/site-packages/numpy/lib/_datasource.py",
>> >>> line 477, in open
>> >>>      return _file_openers[ext](found, mode=mode)
>> >>> IOError: invalid mode: Ub
>> >>>
>> >>
>> >> Guess that wasn't tested before ;) I thought that was strange when I
>> saw it.
>> >> The source of the problem is line 2035 in npyio.py. Additionally, Since
>> >> genloadtxt needs to have byte strings the 'rb" mode should probably be
>> used.
>> >> That works on linux, both for python 2 and python 3, but doing that
>> might
>> >> uncover genfromtxt problems on other platforms.
>>
>> > "rb" is fine on Windows with python 3.2, (that's what I tested
>> > initially for this bug)
>>
>> IIUC, "Ub" is undefined -- "U" means universal newlines, which makes no
>> sense when used with "b" for binary. I looked at the code a ways back,
>> and I can't remember the resolution order, but there isn't any checking
>> for incompatible flags.
>>
>> I'd expect that genfromtxt, being txt, and line oriented, should use
>> 'rU'. but if it wants the raw line endings (why would it?) then rb
>> should be fine.
>>
>> Note that if you only test with unix (\n) and dos (\r\n) line endings,
>> it may work with 'b', if it's splitting on '\n', but not if you try it
>> with Mac endings (\r). Of course with OS-X mac endings are getting
>> pretty uncommon.
>>
>>
> The 'Ub' mode doesn't work for '\r' on python 3. This may be a bug in
> python, as it works just fine on python 2.7. It may indeed be desirable to
> read the files as text, but that would require more work on both loadtxt and
> genfromtxt.
>
>
Curiously, 'rbU' and 'rU' do work on 2.4, but not 'Urb',  'Ub', 'Ur', or
'bU'. Due to Python 3 not hadling '\r' in binary mode, the shortest path
forward might be to open files as text and call asbytes on the lines as they
are read.

Chuck
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to