Re: iter(lambda:f.read(8192),'')

2008-02-25 Thread Gabriel Genellina
En Sun, 24 Feb 2008 10:18:31 -0200, Dustan <[EMAIL PROTECTED]>  
escribió:
> On Feb 24, 5:11 am, gert <[EMAIL PROTECTED]> wrote:

>> what is the difference between iter(lambda:f.read(8192), ') and
>> iter(f.read(8192),'') ?
>
> iter(lambda:f.read(8192), '') (what you probably meant) is what it
> looks like: iter(some_func, '').

Just to make it more clear, and guessing the original context:

f = open(...)
for data in iter(lambda: f.read(8192), ''):
   do_something_with(data)

is the way to iterate over a file in blocks of 8192 bytes each.

-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: iter(lambda:f.read(8192),'')

2008-02-24 Thread gert
aha ok got it :)

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: iter(lambda:f.read(8192),'')

2008-02-24 Thread Dustan
On Feb 24, 5:11 am, gert <[EMAIL PROTECTED]> wrote:
> what is the difference between iter(lambda:f.read(8192), ') and
> iter(f.read(8192),'') ?

One does not work, and one is syntactically incorrect:

>>> iter(f.read(8192),'')

Traceback (most recent call last):
  File "", line 1, in 
iter(f.read(8192),'')
TypeError: iter(v, w): v must be callable
>>> iter(lambda:f.read(8192), ')

SyntaxError: EOL while scanning single-quoted string

To clarify:

f.read(8192) returns the next 8192 bytes of the file in a string, or
whatever is leftover, or an empty string when the file is exhausted.
lambda: f.read(8192) is a function that will return the next 8192
bytes of the file every time it is called.

So iter(f.read(8192),'') is evaluated as iter(some_string, ''). When
iter receives two arguments, it expects the first to be a function,
not a string.

iter(lambda:f.read(8192), '') (what you probably meant) is what it
looks like: iter(some_func, '').
-- 
http://mail.python.org/mailman/listinfo/python-list


iter(lambda:f.read(8192),'')

2008-02-24 Thread gert
what is the difference between iter(lambda:f.read(8192), ') and
iter(f.read(8192),'') ?
-- 
http://mail.python.org/mailman/listinfo/python-list