Мені довелося зробити щось подібне у версії Linux, яка не мала правильних параметрів, скомпільованих у wget. Цей приклад призначений для завантаження інструменту аналізу пам'яті 'guppy'. Я не впевнений, важливо це чи ні, але я зберіг ім'я цільового файлу таким самим, як ім'я цільової URL-адреси ...
Ось що я придумав:
python -c "import requests; r = requests.get('https://pypi.python.org/packages/source/g/guppy/guppy-0.1.10.tar.gz') ; open('guppy-0.1.10.tar.gz' , 'wb').write(r.content)"
Це однокласний вкладиш, ось він трохи читабельніший:
import requests
fname = 'guppy-0.1.10.tar.gz'
url = 'https://pypi.python.org/packages/source/g/guppy/' + fname
r = requests.get(url)
open(fname , 'wb').write(r.content)
Це працювало для завантаження tarball. Я зміг витягти пакет і завантажити його після завантаження.
РЕДАГУВАТИ:
Для вирішення питання, ось реалізація з рядком прогресу, надрукованим на STDOUT. Можливо, існує більш портативний спосіб зробити це без clint
пакету, але це було перевірено на моїй машині і працює нормально:
from clint.textui import progress
import requests
fname = 'guppy-0.1.10.tar.gz'
url = 'https://pypi.python.org/packages/source/g/guppy/' + fname
r = requests.get(url, stream=True)
with open(fname, 'wb') as f:
total_length = int(r.headers.get('content-length'))
for chunk in progress.bar(r.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1):
if chunk:
f.write(chunk)
f.flush()