「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python 3で文字列として保存されたURLからファイルをダウンロードするにはどうすればよいですか?

Python 3で文字列として保存されたURLからファイルをダウンロードするにはどうすればよいですか?

2024 年 11 月 20 日に公開
ブラウズ:622

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

文字列に保存された URL を使用して Python 3 で Web からファイルをダウンロードする方法

Web からファイルをダウンロードしようとするとPython 3 の Web サーバーで URL として文字列を渡すと、バイト入力を要求するエラーが発生する可能性があります。この記事では、この問題を回避し、ファイルを正常に取得するためのいくつかの方法を紹介します。

urllib.request.urlopen の使用

Web ページのコンテンツを取得するには、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.urlretrieve 関数:

import urllib.request

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

このメソッドは、指定された URL からファイルをダウンロードし、'file.txt' としてローカルに保存します。

使用urlib.request.urlopen with 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)

ダウンロードをバイトとして保存する

速度を優先する場合は、ダウンロードしたデータをバイト オブジェクトに直接保存してから、ファイルに書き込まれますが、これは小さなファイルにのみ適しています:

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

これらのメソッドのいずれかを実装すると、URL が文字列として保存されている場合でも、開発者は Python 3 で Web からファイルを正常にダウンロードできます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3