2010-11-11 11 views
2
import urllib2, sys 

if len(sys.argv) !=3: 
       print "Usage: download.py <link> <saveas>" 
       sys.exit(1) 

site = urllib2.urlopen(sys.argv[1]) 
meta = site.info() 
print "Size: ", meta.getheaders("Content-Length") 
f = open(sys.argv[2], 'wb') 
f.write(site.read()) 
f.close() 

Je me demande comment afficher le nom et la taille du fichier avant le téléchargement et comment afficher la progression du téléchargement du fichier. Toute aide serait appréciée.Télécharger un fichier en Python

+2

suis-je suppose que le code vous avez écrit ne fonctionne pas pour montrer la longueur? sinon, quelle est l'erreur que vous obtenez? aussi: pour savoir combien de temps cela prendra, vous devez évidemment connaître la vitesse actuelle de votre connexion; ça pourrait être difficile. –

Répondre

1

Pour afficher le nom du fichier: print f.name

Pour voir toutes les choses cool que vous pouvez faire avec le fichier: dir(f)

Je ne suis pas sûr que je sais ce que vous voulez dire quand vous dites:

how to display how long it has before the file is finished downloading 

Si vous souhaitez afficher le temps nécessaire au téléchargement, vous pouvez jeter un œil au module timeit.

ce que je n'est pas ce que vous recherchez, alors s'il vous plaît mettre à jour la question, donc je peux essayer de vous donner une meilleure réponse

+0

Désolé pour le dérangement, ce que je voulais dire, c'est comment puis-je suivre la progression du téléchargement. – SourD

+0

La réponse à votre question mise à jour va tendre les limites de mes prouesses Python, mais permettez-moi de tenter le coup: je pense que vous devriez commencer votre téléchargement comme un fil, en téléchargeant votre fichier à un nom de fichier spécifique. Exécutez un deuxième thread qui vérifie en permanence la taille du fichier en cours d'enregistrement. Cela devrait vous donner un "téléchargé jusqu'à présent: x Ko", mais je ne suis pas sûr si vous pouvez l'utiliser pour sortir un "téléchargé jusqu'à présent: x%" – inspectorG4dget

5

utilise urllib.urlretrieve

 

    import urllib, sys 

    def progress_callback(blocks, block_size, total_size): 
     #blocks->data downloaded so far (first argument of your callback) 
     #block_size -> size of each block 
     #total-size -> size of the file 
     #implement code to calculate the percentage downloaded e.g 
     print "downloaded %f%%" % blocks/float(total_size) 

    if len(sys.argv) !=3: 
     print "Usage: download.py " 
     sys.exit(1) 

    site = urllib.urlopen(sys.argv[1]) 
    (file, headers) = urllib.urlretrieve(site, sys.argv[2], progress_callback) 
    print headers 
 
+0

Peut-être donner l'exemple d'utilisation OP? –

+0

voir le code édité ci-dessus – mossplix

Questions connexes