On Sun, Oct 4, 2009 at 5:29 AM, Martien Verbruggen
<martien.verbrug...@invalid.see.sig> wrote:
> On Sun, 4 Oct 2009 01:17:18 +0000 (UTC),
>        Grant Edwards <inva...@invalid.invalid> wrote:
>> On 2009-10-03, ryniek90 <rynie...@gmail.com> wrote:
>>
>>> So, whether it is or has been planned the core Python
>>> implementation of *scanf()* ?
>>
>> One of the fist things I remember being taught as a C progrmmer
>> was to never use scanf.  Programs that use scanf tend to fail
>> in rather spectacular ways when presented with simple typos and
>> other forms of unexpected input.
>
> That's right. One shouldn't use scanf() if the input is unpredictable
> osr comes from people, because the pitfalls are many and hard to avoid.
> However, for input that is formatted, scanf() is perfectly fine, and
> nice and fast.
>
> fgets() with sscanf() is better to control if your input is not as
> guaranteed.
>
>> Given the bad behavior and general fragility of scanf(), I
>> doubt there's much demand for something equally broken for
>> Python.
>
> scanf() is not broken. It's just hard to use correctly for unpredictable
> input.
>
> Having something equivalent in Python would be nice where most or all of
> your input is numerical, i.e. floats or integers. Using the re module,
> or splitting and converting everything with int() or float() slows down
> your program rather spectacularly. If those conversions could be done
> internally, and before storing the input as Python strings, the speed
> improvements could be significant.
>
> There is too much storing, splitting, regex matching and converting
> going on if you need to read numerical data from columns in a file.
> scanf() and friends make this sort of task rather quick and easy.
>
> For example, if your data is the output of a numerical analysis program
> or data coming from a set of measuring probes, it often takes the form
> of one or more columns of numbers, and there can be many of them. If you
> want to take one of these output files, and transform the data, Python
> can be terribly slow.
>
> It doesn't have to be scanf(), but something that would allow the direct
> reading of text input as numerical data would be nice.
>
> On the other hand, if something really needs to be fast, I generally
> write it in C anyway :)
>
> Martien

I haven't tried it but couldn't you use scanf from ctypes?
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to