如何在请求/aiohttp 中的 PUT 调用中使用数据帧

How to use a dataframe in a PUT call in requests / aiohttp

我正在尝试通过 API 与应用程序进行交互。根据文档,我应该能够通过 PUT 调用上传自定义 "csv" 文件。

根据文档,调用应如下所示:

PUT [URL]
Host: [host domain]
Accept: application/json
Content-Length: 79182
Content-Type: multipart/form-data; boundary=c40cf424beg7650b

--c40cf424beg7650b
Content-Disposition: form-data; name="file"; filename="my_csv.csv"
Content-Type: application/octet-stream

56.5770
32.5669
...
30.9038
20.4441
--c40cf424beg7650b--

该文件应包含 8760 个单独的条目,我目前已将其存储在数据框中。我想知道是否有人知道如何在 aiohttp.ClientSession.put() 调用中传递此 DataFrame。

非常感谢!

我不知道你在代码方面做了什么尝试。但是这里有一个使用aiohttp上传文件的例子。

示例:

session = aiohttp.ClientSession()
url = '<api-url>'
files = {'file': open('report.xls', 'rb')}

await session.put(url, data=files)

一个小更新,我找到了一个相对简单的方法来避免使用缓冲数据。 aiohttp 有一个内置的 FormData 对象,可以帮助我解决这种特殊情况。当将 Pandas DataFrame 中的列作为 Pandas 系列一一传递时,这非常有效。

import aiohttp    

data = aiohttp.FormData()
data.add_field('file', relevant_data, filename=filename)
       
async with aiohttp.ClientSession() as session:
    await session.put(url, data=data)