<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как загружать файлы с URL-адреса в Python

Как загружать файлы с URL-адреса в Python

Загрузка файлов из сети является одной из наиболее распространенных ежедневных задач, выполняемых в Интернете. Это важно в связи с тем, что многие успешные программы позволяют своим пользователям загружать файлы из Интернета.

В сегодняшней статье мы рассмотрим, как использовать библиотеки requests и tqdm для создания загрузчика файлов с индикатором выполнения с использованием Python.

Начнем с создания изолированной среды, куда установим все необходимое через командную строку:


# windows
# для python 3 и выше
>>>python -m venv my_folder

# активируем ее
>>>cd my_folder/Scripts
>>>activate

# вывод
>>> (my_folder) C:\Users\УЗИ\Desktop\my_folder\Scripts>

# среда активирована, теперь установим библиотеки requests и tqdm

>>>pip3 install requests tqdm

Модуль tqdm здесь используется просто для создания красивого индикатора в консоли.

Откройте новый файл Python и импортируйте:


from tqdm import tqdm
import requests
import cgi
import sys

# URL адрес будет передаваться через командную строку

url = sys.argv[1]


Далее, для загрузки контента с интернета мы используем метод requests.get(). Но есть одна проблема, так как данный метод загружает информацию целиком, что может перегрузить память. К счастью для нас, у метода get есть параметр stream, которому можно присвоить True. Что позволит загружать информацию частями.


# установим значение в 1024 байт за один раз
buffer_size = 1024
# загрузка тела ответа по кускам
response = requests.get(url, stream=True)

Теперь не только заголовок ответа загружен и соединение осталось открытым, также есть возможность управлять рабочим процессом с помощью метода iter_content(). Но перед тем как продемонстрировать указанное в действии, мы должны извлечь название файла и его общий размер.



# получим размер файла
file_size = int(response.headers.get("Content-Length", 0))

# получим имя файла
default_filename = url.split("/")[-1]

# получим заголовок content disposition, обозначающий что файл #предназначен для скачивания
content_disposition = response.headers.get("Content-Disposition")

# если данный элемент существует
if content_disposition:
    # разбираем заголовок с помощью cgi
    value, params = cgi.parse_header(content_disposition)
    
    # извлекаем имя файла из content disposition
    filename = params.get("filename", default_filename)
else:
    # если же content dispotion не доступен то используем имя из url
    filename = default_filename

Мы получаем размер файла в байтах из заголовка ответа Content-Length, мы также получаем имя файла в заголовке Content-Disposition, но нам нужно проанализировать его с помощью функции cgi.parse_header().

Давайте скачаем файл прямо сейчас:


# индикатор выполнения отражает количество загруженных байт
progress = tqdm(response.iter_content(buffer_size), f"Загрузка {filename}", total=file_size, unit="B", unit_scale=True, unit_divisor=1024)
with open(filename, "wb") as f:
    for data in progress.iterable:
        # запись данных прочитанных из файла
        f.write(data)
        # update the progress bar manually
        progress.update(len(data))

Запуск скрипта:


>>>python download_indicator.py https://download.virtualbox.org/virtualbox/6.1.18/VirtualBox-6.1.18-142142-Win.exe

# Расширения файлов должны оканчиваться на .exe, .pdf, etc.

Результат:


Изображение

В результате в каталоге с запущенным скриптом будет установлен VirtualBox. Таким образом, с помощью Python и библиотек requests и tqdm мы установили виртуальную машину.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.