2016-10-19 15 views
1

私はファイルをダウンロードするためにリクエストlibを使用しています。私は多くの情報を持っています。サイズ、タイプ、日付のような応答について。しかし、私はダウンロード速度を取得し、最大と最小を設定する必要があります。どうすればダウンロード速度を得ることができますか?ここでPythonを使用してファイルをダウンロードする速度を取得する

はコードです:

import requests 
import sys 


link = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" 
file_name = "downloaded.png" 
response = requests.get(link, stream=True) 
with open(file_name, "wb") as f: 
     print "Downloading %s" % file_name 
     response = requests.get(link, stream=True) 
     total_length = int(response.headers.get('content-length')) 
     print response.headers["content-type"] 
     print total_length/1024, "Kb" 
     print int(response.headers["Age"]) * (10 ** -6), "Sec" 
     print response.headers["date"] 

     if total_length is None: # no content length header 
      f.write(response.content) 
     else: 
      dl = 0 
      for data in response.iter_content(chunk_size=4096): 
       dl += len(data) 
       f.write(data) 
       done = int(50 * dl/total_length) 
       sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done))) 
       sys.stdout.flush() 

、ここでは出力です:

Downloading downloaded.png 
image/png 
213 Kb 
0.054918 Sec 
Wed, 19 Oct 2016 08:43:47 GMT 
[==================================================] 
+0

男、私はkbでダウンロード速度を取得したい私はプログレスバーは必要ありません。 –

+2

リンクされた質問には、必要のない情報が含まれていても、必要なすべての情報が含まれています。 – acdr

答えて

1

私はちょうど、import timeを追加start変数から1とsys.stdout.write行を置き換える:How to measure download speed and progress using requests?

import requests 
import sys 
import time 


link = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" 
file_name = "downloaded.png" 
start = time.clock() 
response = requests.get(link, stream=True) 
with open(file_name, "wb") as f: 
    print "Downloading %s" % file_name 
    response = requests.get(link, stream=True) 
    total_length = int(response.headers.get('content-length')) 
    print response.headers["content-type"] 
    print total_length/1024, "Kb" 
    print int(response.headers["Age"]) * (10 ** -6), "Sec" 
    print response.headers["date"] 

    if total_length is None: # no content length header 
     f.write(response.content) 
    else: 
     dl = 0 
     for data in response.iter_content(chunk_size=4096): 
      dl += len(data) 
      f.write(data) 
      done = int(50 * dl/total_length) 
      sys.stdout.write("\r[%s%s] %s bps" % ('=' * done, ' ' * (50-done), dl//(time.clock() - start))) 
      sys.stdout.flush() 
+0

Broは、この行でどれくらいの速度がカウントされたかを説明することができます –

+0

dl //(time.clock() - start) –

+0

確かにtime.clock()はプロセッサ時間を秒単位で返します。それを変数 'start'に格納します。その後、進行状況バーの反復中に、再度delta(現在の時刻クロック - 開始時刻のタイムクロック)を計算できるようにtime.clock()を取得します。デルタは、ダウンロードの開始から現在の時刻までの秒数です。受け取った総バイト数(変数 'dl')をデルタで割って、1秒あたりに受信したバイト数を概算します。 – fedterzi

関連する問題