使用urllib接收附件 - Python

2 投票
2 回答
5909 浏览
提问于 2025-04-17 14:27

我正在用Python测试我的网页软件,主要是发送请求给它。我可以发送请求、接收响应,并解析json数据。不过,网页上有一个选项是下载文件。我发送了下载请求,并确认响应头里有我期待的内容(比如application/octet-stream和合适的文件名),但是Content-Length却是0。如果长度是0,我就认为文件实际上没有被发送。我可以通过其他方式下载文件,所以我知道我的软件是正常工作的,但在用Python时遇到了麻烦。

我构建了请求,然后执行了:

f = urllib.request.urlopen(request)
f.body = f.read()

我本来期待数据会在f.body里,但它是空的(我看到的是“b''”)

在Python中,有没有其他方法可以访问附件里的文件内容呢?

2 个回答

6

有没有其他方法可以在Python中访问附件的文件内容呢?

我更熟悉的是python-requests,而不是urllib

import requests

url = "http://example.com/foobar.jpg"

#make request
r = requests.get(url)
attachment_data = r.content

#save to file
with open(r"C:/pictures/foobar.jpg", 'wb') as f:
  f.write(attachment_data)
0

原来我需要往文件里放一些数据,这样才能在内容里有东西。我应该早点注意到这一点。

撰写回答