A reporthook in urllib.urlretrieve() (in 2.3.2) is
given the max number of characters accepted ("bs") per
.read() as its second argument. It would be more
helpful to receive the number of characters actually
retrieved in the most recent block.
While perhaps this would break some existing code
(though I can't imagine how), the minor patches below
will allow giving progess updates, etc. that are accurate.
Thanks
Allan Wilson
------------
*** urllib.py.old Tue Nov 25 17:42:55 2003
--- urllib.py Tue Nov 25 18:00:50 2003
***************
*** 236,248 ****
reporthook(0, bs, size)
block = fp.read(bs)
if reporthook:
! reporthook(1, bs, size)
while block:
tfp.write(block)
block = fp.read(bs)
blocknum = blocknum + 1
if reporthook:
! reporthook(blocknum, bs, size)
fp.close()
tfp.close()
del fp
--- 236,248 ----
reporthook(0, bs, size)
block = fp.read(bs)
if reporthook:
! reporthook(1, len(block), size)
while block:
tfp.write(block)
block = fp.read(bs)
blocknum = blocknum + 1
if reporthook:
! reporthook(blocknum, len(block), size)
fp.close()
tfp.close()
del fp
|