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

Schreibe einen Kommentar