我正在尝试使用Google的python API客户端库将a public file from Google Drive导出到本地驱动器。
我正在使用this script,这是this tutorial的改编示例。我已经验证了我的凭据是否有效,并且整天都在使用create
和update
方法,没有任何问题。
当我从命令行运行python api_demo.py
时,我得到了预期的结果,并将PDF存储到我的本地驱动器中:
aaronpolhamus$ python api_demo.py
Uploaded "hello.txt" (text/plain)
Uploaded "hello.txt" (application/vnd.google-apps.document)
fileId: P110vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo
mimeType: application/pdf
Downloaded "hello.pdf" (application/pdf)
然而,当我进入python shell以交互方式工作时,我只是无法让它运行。这是它的外观:
In [1]: DRIVE.files().export(fileId='P110vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo', mimeType='application/pdf').execute()
/Users/aaronpolhamus/anaconda/envs/credijusto/lib/python3.6/site-packages/oauth2client/_helpers.py in positional_wrapper(*args, **kwargs)
131 elif positional_parameters_enforcement == POSITIONAL_WARNING:
132 logger.warning(message)
--> 133 return wrapped(*args, **kwargs)
134 return positional_wrapper
135
/Users/aaronpolhamus/anaconda/envs/credijusto/lib/python3.6/site-packages/googleapiclient/http.py in execute(self, http, num_retries)
838 callback(resp)
839 if resp.status >= 300:
--> 840 raise HttpError(resp, content, uri=self.uri)
841 return self.postproc(resp, content)
842
HttpError: <HttpError 404 when requesting https://www.googleapis.com/drive/v3/files/P110vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo/export?mimeType=application%2Fpdf returned "File not found: P110vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo.">
现在,如果您转到该链接,fileId
实际上并没有领先P1
。我尝试将前两个字符砍掉,然后出现500
错误:
In [2]: DRIVE.files().export(fileId='10vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo', mimeType='application/pdf').execute()
HttpError Traceback (most recent call last)
<ipython-input-237-764cc68cfa0e> in <module>()
----> 1 DRIVE.files().export(fileId='10vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo', mimeType='application/pdf').execute()
/Users/aaronpolhamus/anaconda/envs/credijusto/lib/python3.6/site-packages/oauth2client/_helpers.py in positional_wrapper(*args, **kwargs)
131 elif positional_parameters_enforcement == POSITIONAL_WARNING:
132 logger.warning(message)
--> 133 return wrapped(*args, **kwargs)
134 return positional_wrapper
135
/Users/aaronpolhamus/anaconda/envs/credijusto/lib/python3.6/site-packages/googleapiclient/http.py in execute(self, http, num_retries)
838 callback(resp)
839 if resp.status >= 300:
--> 840 raise HttpError(resp, content, uri=self.uri)
841 return self.postproc(resp, content)
842
HttpError: <HttpError 500 when requesting https://www.googleapis.com/drive/v3/files/10vUov9J9rg2b1XoHMZ3Ssb4Z-FUUPKNQckuyxn_gmo/export?mimeType=application%2Fpdf returned "Internal Error">
命令行和交互式案例之间的区别是令人费解的,因为我可以产生不同的错误,但却没有更接近实际弄清楚发生了什么。我正在进行完全相同的操作,粘贴与终端中打印的值相同的值。
代码和示例数据都是公开的。有帮助吗?