[Numpy-discussion] major bug in fromstring, ascii mode

Pauli Virtanen pav@iki...
Sun Jan 27 16:19:47 CST 2008


su, 2008-01-27 kello 13:48 -0700, Charles R Harris kirjoitti:
[clip]
> 
> I don't think the problem is scanf, at least not here. The following code snippet works fine for me.
>

Reading the code in arraytypes.inc.src and multiarraymodule.c, it
appears that numpy is using strtol(str, &tailptr, 0) for the string to
integer conversion. Calling strtol with BASE == 0 enables the automatic
base detection from the prefix.

However, as you say, scanf does not do this. Numpy appears to use fscanf
when reading data from files, so there is a discrepancy here:

>>> from numpy import fromfile, fromstring
>>> f = open('test.dat', 'w')
>>> f.write("20:09:21")
>>> f.close()

>>> fromfile('test.dat', dtype=int, sep=':')
array([20,  9, 21])
>>> fromstring('20:09:21', dtype=int, sep=':')
array([20,  0])

Also, the following result is quite strange, seems like a silent
failure:

>>> fromfile('test.dat', dtype=int)
array([809119794, 825375289])

I guess some more testcases should be written...

-- 
Pauli Virtanen




More information about the Numpy-discussion mailing list