我有一个可以从中检索文件的 API。我使用urllib3in来执行此操作python。
例如
url = "https://example.com/api/files/13"
r = http.request('GET', url, headers=headers)
其中 headers dict 包含用于身份验证的信息。
解码响应中的所有数据时,得到与我预期相同的结果。我通过浏览器的网络信息终端的响应验证了这一点:
load = json.loads(r.data.decode('utf-8'))
data = load['data']
data在这个阶段是一个包含字符和数字的长字符串,并且看起来,取决于文件,类似于dG0seHJheSxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X3BvcyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X3ZlbCxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfRGV0X2FjYyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfUm5nX3BvcyxtZWRQaG90b24uU04yMDE2LUlSMDA3LkltUmlfUm5nX3ZlbCxtZWRQaG90b...,在点之后继续。但它只是一个 csv 文件。
我现在面临的唯一挑战是将数据存储到光盘上。到目前为止我尝试的是:
with open(dst_file, 'wb') as out_file:
out_file.write(data)
而不是outfile.write(...)我也尝试过shutil.copyfileobj(r, out_file),但也不起作用。
我想这取决于我所拥有的数据的表示形式。我想把它作为一个字符串并不是真的有用。但是怎么保存呢?
编辑:
可能需要注意的一件事:api url 不包含文件,因此调用将被重定向。我用网络上的另一个文件进行了尝试,在这里我确实在访问时立即获得了所需的数据>> r.data。