Wie Messen Sie die download-Geschwindigkeit und den Fortschritt mit Anfragen?
Ich bin mit requests
Dateien herunter zu laden, aber für große Dateien, die ich brauche, um zu überprüfen, die Größe der Datei auf der Festplatte jedes mal, weil ich kann nicht anzeigen, den Fortschritt in Prozent und ich würde auch gerne wissen, die download-Geschwindigkeit. Wie kann ich es tun ? Hier ist mein code :
import requests
import sys
import time
import os
def downloadFile(url, directory) :
localFilename = url.split('/')[-1]
r = requests.get(url, stream=True)
start = time.clock()
f = open(directory + '/' + localFilename, 'wb')
for chunk in r.iter_content(chunk_size = 512 * 1024) :
if chunk :
f.write(chunk)
f.flush()
os.fsync(f.fileno())
f.close()
return (time.clock() - start)
def main() :
if len(sys.argv) > 1 :
url = sys.argv[1]
else :
url = raw_input("Enter the URL : ")
directory = raw_input("Where would you want to save the file ?")
time_elapsed = downloadFile(url, directory)
print "Download complete..."
print "Time Elapsed: " + time_elapsed
if __name__ == "__main__" :
main()
Ich denke, eine Möglichkeit wäre es, die Datei zu Lesen, jedes mal in der for
Schleife und berechnen Sie den Prozentsatz des Fortschritts basierend auf der header -Content-Length
. Aber das wäre wieder ein Thema für große Dateien(um die 500MB). Gibt es irgendeinen anderen Weg, es zu tun?
InformationsquelleAutor Mayank Kumar | 2013-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
siehe hier: Python Fortschrittsbalken und downloads
ich denke, der code wäre so etwas wie dies, es sollte zeigen, die Durchschnittliche Geschwindigkeit seit start als bytes pro Sekunde:
requests.get(...)
es wird download der gesamten Datei, dann wird es aus der get-Funktion. Dies ist die dynamischen Eigenschaften .beachten Sie die
stream
parameter in den get-Aufrufrequest.get(url , stream=True)
. Check out Dokumentation.Was ist die Bedeutung der Multiplikation 50 bei der Berechnung der heruntergeladenen Prozentsatz ?
es ist die Länge des Balkens. Finden Sie in der verlinkten Antwort.
InformationsquelleAutor freeforall tousez