文字列に格納された 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 サイトの他の関連記事を参照してください。