2017-05-02 2 views
4

J'ai essayé de configurer une barre de progression en utilisant le module Tqdm dans python 3.6 mais j'ai l'impression d'être à mi-chemin.Utilisation de Tqdm pour ajouter une barre de progression lors du téléchargement de fichiers

Mon code est le suivant:

from tqdm import tqdm 
import requests 
import time 

url = 'http://alpha.chem.umb.edu/chemistry/ch115/Mridula/CHEM%20116/documents/chapter_20au.pdf' 

# Streaming, so we can iterate over the response. 
r = requests.get(url, stream=True) 
#Using The Url as a filename 
local_filename = url.split('/')[-1] 
# Total size in bytes. 
total_size = int(r.headers.get('content-length', 0)) 
#Printing Total size in Bytes 
print(total_size) 

#TQDM 
with open(local_filename, 'wb') as f: 
    for data in tqdm(r.iter_content(chunk_size = 512), total=total_size, unit='B', unit_scale=True): 
     f.write(data) 

Le problème est que, lors de l'insertion du chunk_size = 512 dans r.iter_content la barre de progression ne se charge pas du tout en montrant les données de téléchargement, mais quand je supprimer chunk_size = 512 complètement et laisser les parenthèses vides la barre se charge exactement comme il se doit, mais la vitesse de téléchargement est horrible.

Qu'est-ce que je fais mal ici?

Répondre

1

Vous n'êtes pas loin, mais vous manquez simplement à peu près tout le code pour que la barre de progression fonctionne en conséquence. En supposant que vous avez déjà créé votre interface, voici une méthode que j'ai utilisée pour ma barre de progression. Il télécharge le fichier et l'enregistre sur le bureau (mais vous pouvez spécifier où vous voulez l'enregistrer). Il prend simplement combien de fichier est téléchargé et le divise par la taille totale du fichier, puis utilise cette valeur pour mettre à jour la barre de progression. Laissez-moi savoir si ce code aide:

url = 'http://alpha.chem.umb.edu/chemistry/ch115/Mridula/CHEM%20116/documents/chapter_20au.pdf' 
save = 'C:/Users/' + username + "/Desktop/"  
r = requests.get(url, stream=True) 
total_size = int(r.headers["Content-Length"]) 
downloaded = 0 # keep track of size downloaded so far 
chunkSize = 1024 
bars = int(fileSize/chunkSize) 
print(dict(num_bars=bars)) 
with open(filename, "wb") as f: 
    for chunk in tqdm(r.iter_content(chunk_size=chunkSize), total=bars, unit="KB", 
            desc=filename, leave=True): 
     f.write(chunk) 
     downloaded += chunkSize # increment the downloaded 
     prog = ((downloaded * 100/fileSize)) 
     progress["value"] = (prog) # *100 #Default max value of tkinter progress is 100 

return 

progress = la barre de progression