«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как загрузить файл по URL-адресу, хранящемуся в виде строки в Python 3?

Как загрузить файл по URL-адресу, хранящемуся в виде строки в Python 3?

Опубликовано 20 ноября 2024 г.
Просматривать:827

How to Download a File from a URL Stored as a String in Python 3?

Как загрузить файл из Интернета в Python 3 с URL-адресом, сохраненным в строке

При попытке загрузить файл с веб-сервере на Python 3, передача строки в качестве URL-адреса может привести к ошибке, требующей ввода байтов. В этой статье представлено несколько способов обойти эту проблему и успешно получить файл.

Использование urllib.request.urlopen

Чтобы получить содержимое веб-страницы, используйте urllib .request.urlopen(). Эта функция возвращает объект ответа, который затем можно считать в переменную:

import urllib.request

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()  # a `bytes` object

Использование urlib.request.urlretrieve

Самый простой способ загрузить и сохранить файл — использовать функция urllib.request.urlget:

import urllib.request

url = 'http://example.com/file.txt'
urllib.request.urlretrieve(url, 'file.txt')

Этот метод загружает файл с указанного URL-адреса и сохраняет его локально как 'file.txt'.

Использование urlib.request.urlopen с помощью Shutil.copyfileobj

Для большего контроля над В процессе загрузки используйте urllib.request.urlopen() для возврата файлового объекта. Затем этот объект можно скопировать в реальный файл с помощью Shutil.copyfileobj():

import urllib.request
import shutil

url = 'http://example.com/file.zip'
with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file:
    shutil.copyfileobj(response, out_file)

Сохранение загрузки в виде байтов

Если скорость является приоритетом, загруженные данные могут быть сохранены непосредственно в объекте bytes и впоследствии записывается в файл, хотя это подходит только для небольших файлов:

import urllib.request

url = 'http://example.com/icon.png'
with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file:
    data = response.read() # a `bytes` object
    out_file.write(data)

Обработка сжатых файлов

urllib.request.urlopen() также можно использовать для обработки сжатых файлов, при условии, что сервер поддерживает произвольный доступ:

import urllib.request
import gzip

url = 'http://example.com/archive.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object

Реализуя один из этих методов, разработчики могут успешно загружать файлы из Интернета в Python 3, даже если URL-адрес хранится в виде строки.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3