ホームページ  >  記事  >  バックエンド開発  >  Python 3で文字列として保存されたURLからファイルをダウンロードするにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 06:48:01174ブラウズ

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

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

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

urllib.request.urlopen の使用

Web ページのコンテンツを取得するには、urllib を利用します。 .request.urlopen()。この関数は応答オブジェクトを返します。このオブジェクトは変数に読み込むことができます。

<code class="python">import urllib.request

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

urlib.request.urlretrieve を使用する

ダウンロードとファイルを保存するには、urllib.request.urlretrieve 関数を利用します。

<code class="python">import urllib.request

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

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

shutil.copyfileobj での urlib.request.urlopen の使用

ダウンロード プロセスをより詳細に制御するには、urllib.request.urlopen() を使用してファイルのようなオブジェクトを返します。このオブジェクトは、shutil.copyfileobj() を使用して実際のファイルにコピーできます。

<code class="python">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)</code>

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

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

<code class="python">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)</code>

圧縮ファイルの処理

サーバーがランダム アクセスをサポートしている場合、urllib.request.urlopen() を使用して圧縮ファイルを処理することもできます。

<code class="python">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</code>

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

以上がPython 3で文字列として保存されたURLからファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。