On Tue, 26 Apr 2005 20:28:43 GMT, Andrew Godwin wrote:

> I'm trying to write a python script to download data (well, files) from a 
> HTTP server (well, a PHP script spitting them out, at least).
> The file data is just the returned data from the request (the server script 
> echoes the file and then dies).
> 
> I call the page using urllib2, like so:
> 
> satelliteRequest = urllib2.Request(satelliteServer + 
> "?command=download&filepath="+filepath)
> satelliteRequestData = {"username":satelliteUsername, 
> "password":satellitePassword}
> satelliteRequest.add_data(urllib.urlencode(satelliteRequestData))
> satelliteOpener = urllib2.build_opener()
> satelliteOpener.addheaders = [('User-agent', userAgent)]
> 
> Now, if I want to download the file all at once, I just do
> 
> satelliteData = satelliteOpener.open(satelliteRequest).read()
> 
> But some of these files are going to be really, really big, and I want to get 
> a progress bar going. 
> I've tried doing a while loop like this:
> 
> chunkSize = 10240
> while 1:
>  dataBuffer = satelliteOpener.open(satelliteRequest).read(chunkSize)
>  data += dataBuffer
>  if not dataBuffer:
>   break
> 
> But that just gives me the first 10240 bytes again and again. Is there 
> something I'm missing here?
> It might even be I'm calling urllib2 the wrong way (does it download when you 
> read() or when you create the Request?)
> 
> All help is appreciated, I'm sort of stuck here.
> 
> Andrew Godwin

Each time through the loop you re-open the url and thus start from the
beginning. You need to separate the opening from the reading.

HTH,
 John
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to