从 JAD 文件中提取 URL 来下载 JAR 文件时,由于 URL 存储为字符串,我们遇到错误类型。为了解决这个问题,我们探索了在 Python 3 中下载带有字符串 URL 的文件的方法。
检索网页内容:
将网页内容提取到一个变量,我们可以使用 urllib.request.urlopen 并读取响应:
<code class="python">import urllib.request url = 'http://example.com/' response = urllib.request.urlopen(url) data = response.read() # bytes object text = data.decode('utf-8') # str object</code>
下载和保存文件:
对于简单的文件下载和保存,urllib .request.urlretrieve 是最佳方案:
<code class="python">import urllib.request # Download and save file from url to file_name urllib.request.urlretrieve(url, file_name)</code>
或者,您可以获取本地路径和响应标头:
<code class="python">file_name, headers = urllib.request.urlretrieve(url)</code>
使用 urlopen 和 Shutil.copyfileobj 的最佳解决方案:
推荐的方法是利用 urllib.request.urlopen 检索类似文件的 HTTP 响应对象,并使用 Shutil.copyfileobj 将其复制到文件:
<code class="python">import urllib.request import shutil # Download and save file from url to file_name with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file)</code>
小文件的替代方法:
对于较小的文件,可以将整个下载存储在字节对象中并将其写入文件:
<code class="python">import urllib.request # Download and save file from url to file_name with urllib.request.urlopen(url) as response, open(file_name, 'wb') as out_file: data = response.read() # bytes object out_file.write(data)</code>
即时提取压缩数据:
如果 HTTP 服务器支持随机文件访问,您还可以即时提取压缩数据:
<code class="python">import urllib.request import gzip # Read first 64 bytes of .gz file at url 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) # bytes object</code>
以上是如何使用 Python 3 从网络下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!