インターネットと対話するプログラムを作成する場合、多くの場合、ファイルをダウンロードする必要があります。 Webサーバーから。 Python 3 では、このタスクを実行する方法が複数あります。
関数は URL 引数にバイト型を期待しているため、最初に提供されたコードではエラーが発生しますが、抽出されたJAD ファイルの URL は文字列です。 URL が文字列として保存されている場合にファイルをダウンロードするには、UTF-8 エンコードを使用してバイト型に変換します。
<code class="python">import urllib.request def downloadFile(URL=None): h = urllib.request.urlopen(URL.encode('utf-8')) return h.read() downloadFile(URL_from_file)</code>
いくつかの代替方法があります。 Web からファイルをダウンロードします:
urllib.request.urlopen: urlopen:
<code class="python">response = urllib.request.urlopen(URL) data = response.read() # a `bytes` object text = data.decode('utf-8') # a `str`</code>
urllib.request.urlretrieve: ファイルをローカルにダウンロードして保存します:
<code class="python">urllib.request.urlretrieve(URL, file_name)</code>
urllib.request。 urlopen shutil.copyfileobj: ファイルのダウンロードに対して強く推奨される最も正しいアプローチを提供します:
<code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file)</code>
urllib.request.urlopen write to bytes object: より単純なオプションですが、小さいファイルにのみ推奨されます:
<code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data)</code>
最後に、圧縮データをその場で抽出することもできます。可能:
<code class="python">url = 'http://example.com/something.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 からファイルをダウンロードするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。