导出GoogleSheet以打开XML文档并使用Python写入磁盘

导出GoogleSheet以打开XML文档并使用Python写入磁盘,python,python-3.x,google-sheets,google-drive-api,google-workspace,Python,Python 3.x,Google Sheets,Google Drive Api,Google Workspace,我正在使用GSuite的一些电子表格来填充我们服务的数据库。我正在编写一个小的Python脚本,它将通过将文件写入本地磁盘来备份我们的文件 GSuite工作表对象具有id,为了导出Google工作表,至少根据文档,必须使用export\u媒体(fileId,mimeType) 我要导出到的mimeType是一个开放式office文档。谷歌如何做到这一点的例子如下: 我的问题是我的文件完全是空的。在下面的代码中,您会注意到一些print语句,其中输出了一个空字节字符串 我的方法中的请求对象在调试器

我正在使用GSuite的一些电子表格来填充我们服务的数据库。我正在编写一个小的Python脚本,它将通过将文件写入本地磁盘来备份我们的文件

GSuite工作表对象具有
id
,为了导出Google工作表,至少根据文档,必须使用
export\u媒体(fileId,mimeType)

我要导出到的
mimeType
是一个开放式office文档。谷歌如何做到这一点的例子如下:

我的问题是我的文件完全是空的。在下面的代码中,您会注意到一些print语句,其中输出了一个空字节字符串

我的方法中的请求对象在调试器中看起来很好,我没有得到任何异常,程序一直运行到最后。下载程序报告它已完成作业,大小为
21033
。我假设它是以字节为单位的

下面是我用来导出文件并将其写入磁盘的循环和方法

service=build(“驱动器”,“v3”,凭证=委托凭证,缓存\发现=False)
files=service.files().list(**请求_数据).execute().get(“files”,[])
open_type='application/x-vnd.oasis.opendocument.spreadsheet'
对于文件中的f:
将文件导出到开放式办公室(f,服务,开放式)
def导出文件到打开办公室(文件、驱动器服务、mime类型):
request=drive\u service.files().export\u媒体(fileId=file[“id”],mimeType=mime\u type).get()
fh=io.BytesIO()
downloader=MediaIoBaseDownload(fh,请求)
完成=错误
打印(fh.read())#此输出b“”
虽然完成是错误的:
状态,done=downloader.next_chunk()
打印(fh.read())#此输出b“”
打印(“下载%d%%.%int(status.progress()*100))
打开(“my_file.xls”,“wb”)作为文件:
fil.write(fh.read())
我真正想做的就是拿到我的工作表并把它写到我的磁盘上。任何提示都将不胜感激

干杯


在你的脚本中,这个修改怎么样

发件人: 致:
打开(“my_file.xls”,“wb”)作为文件:

fh.seek(0)#现场,@Tanaike,谢谢你
seek()
,我想起了我在大学里的C时代。@anowlinorbit谢谢你的回复。我很高兴你的问题解决了。
with open("my_file.xls", 'wb') as fil:
    fil.write(fh.read())
with open("my_file.xls", 'wb') as fil:
    fh.seek(0)  # <--- Added
    fil.write(fh.read())