私はこの答えのためにワールドワイドウェブを検索しようとしていますが、答えがノーかもしれないと感じています。私は、Python 3.5とと呼ばれるライブラリを使用して、urllib.request.urlopen(url)
というメソッドを使用してリンクを開き、ファイルをダウンロードしています。Python(3.5) - urllib.request.urlopen - プログレスバーを利用できますか?
ファイルが200MBを超えているので、何らかの進歩の尺度を持っているとよいでしょう。私はAPI hereを見ていますが、フック付きのパラメータは表示されません。
は、ここに私のコードです:
downloadURL = results[3] #got this from code earlier up
rel_path = account + '/' + eventID + '_' + title + '.mp4'
filename_abs_path = os.path.join(script_dir, rel_path)
print('>>> Downloading >>> ' + title)
# Download .mp4 from a url and save it locally under `file_name`:
with urllib.request.urlopen(downloadURL) as response, open(filename_abs_path, 'wb') as out_file:
shutil.copyfileobj(response, out_file)
彼らは私が潜在的にプログレスバーを持つことができるか、唯一の方法は別のライブラリを使用することであろうと思えば誰でも洞察を提供することはできますか?私はコードを非常に短くシンプルに保つために探しています、私はちょうどダウンロードされているファイルのいくつかの兆候が必要です。何か助けてくれてありがとう!
これは本当に 'urllib 'には関係ありませんか?むしろ問題は 'copyfileobj()'が進捗状況コールバックを提供しないということです。だから[dup](http://stackoverflow.com/questions/29967487/get-progress-back-from-shutil-file-copy-thread)? – dhke
[python requests](http://docs.python-requests.org/)に切り替えることをお勧めします – Gonzo
プログレスバーを作成するには、ダウンロードしようとしているデータの合計サイズを知る必要があります。ダウンロードされた部分の現在のサイズ最初のものは 'Content-Length'ヘッダから取り出すことができます。指定されたサイズのデータを読み込み、チャンクの長さの合計を計算することで、2番目のデータを計算することができます。 'requests'ライブラリは、あなたが接続からデータのチャンクを読み込むことを可能にします。 – ForceBru