[Python-ideas] itertools.chunks()

MRAB python at mrabarnett.plus.com
Sat Apr 6 19:50:23 CEST 2013


On 06/04/2013 13:50, Giampaolo Rodolà wrote:
> def chunks(total, step):
>      assert total >= step
>      while total > step:
>          yield step;
>          total -= step;
>      if total:
>          yield total
>
Why shouldn't total be less than step?

def chunks(total, step):
     while total >= step:
         yield step
         total -= step
     if total > 0:
         yield total

>>>> chunks(12, 4)
> [4, 4, 4]
>>>> chunks(13, 4)
> [4, 4, 4, 1]
>
>
> I'm not sure how appropriate "chunks" is as a name for such a function.
> Anyway, I wrote that because in a unit test I had to create a file of
> a precise size, like this:
>
> FILESIZE = (10 * 1024 * 1024) + 423  # 10MB and 423 bytes
> with open(TESTFN, 'wb') as f:
>       for csize in chunks(FILESIZE, 262144):
>           f.write(b'x' * csize)
>
> Now I wonder, would it make sense to have something like this into
> itertools module?
>




More information about the Python-ideas mailing list