如何获取用于 dropbox 上传的 pandas xlsxwriter 对象的二进制内容

How to get the binary contents of a pandas xlsxwriter object for dropbox upload

我正在尝试将 Excel sheet 上传到保管箱,其中包含多个由 pandasxlsxwriter 制作的标签。文件不是很大,大约 5MB。我正在为 Python 3

使用 dropbox 模块

我在做:

filename = pd.ExcelWriter('myfile.xlsx' ,engine='xlsxwriter')
actions.to_excel(filename, sheet_name="Combined Actions")
filename.save()

with open(filename, "rb") as f:
    dbx.files_upload(f.read(), "/MyAPP/"+filename)

我在文档中读到 files_upload 需要一个字节对象。我收到错误:Type Error: Invalid file: <pandas.io.excel__XlsxWriter object at 0x000000000071C48>

这个错误是因为我没有提供所需格式的文件吗?我该如何上传才能避免出现类型错误?

您正在尝试使用内置函数 open 打开一个对象。它需要一个字符串作为它的第一个参数(代表一个文件路径)。有关 open 函数的更多信息,请参见 docs

pandas ExcelWriter 的 source 显示它将您传递给它的文件名存储在 .path 中。因此,重命名变量以更好地表示它们的含义并使用 ExcelWriter 实例的 .path 属性:

excel_file = pd.ExcelWriter('myfile.xlsx', engine='xlsxwriter')
actions.to_excel(excel_file, sheet_name="Combined Actions")
excel_file.save()

with open(excel_file.path, 'rb') as f:
    dbx.files_upload(f.read(), '/MyAPP/'+excel_file.path)