2009-01-15 13 views
8

Sto utilizzando urllib.urlretrieve per scaricare un file e implementando una barra di avanzamento del download utilizzando il parametro reporthook. Dal momento che urlretrieve non supporta direttamente l'autenticazione, mi si avvicinò conPython - download di un file su HTTP con barra di avanzamento e autenticazione di base

import urllib 

def urlretrieve_with_basic_auth(url, filename=None, reporthook=None, data=None, 
           username="", password=""): 
    class OpenerWithAuth(urllib.FancyURLopener): 
     def prompt_user_passwd(self, host, realm): 
      return username, password 

    return OpenerWithAuth().retrieve(url, filename, reporthook, data) 

Questo funziona - ma sembra che ci potrebbe essere un modo più diretto per farlo (magari con urllib2 o httplib2 o ...) - -qualche idea?

risposta

7

urlgrabber dispone di supporto integrato per barre di avanzamento, autenticazione e altro.

+0

Nice, funzionerà perfettamente per il mio progetto corrente – rinti

+3

L'URI di Ignacio è ora (2010-06-25) non aggiornato, l'aggiornamento uno è [urlgrabber] (http://linux.duke.edu/urlgrabber/) – Albireo

+1

Nuovo URI: http://urlgrabber.baseurl.org/ –

Problemi correlati