尝试使用Python SDK导出文件时出现令人费解的404错误

尝试使用Python SDK导出文件时出现令人费解的404错误,python,google-drive-api,Python,Google Drive Api,我正在尝试使用Google的python API客户端库导出到本地驱动器 我正在使用,这是一个经过改编的示例。我已经验证了我的凭据是否有效,并且整天都在使用create和update方法,没有任何问题 当我从命令行运行pythonapi_demo.py时,我得到了预期的结果,并将PDF存储到本地驱动器中: aaronpolhamus$ python api_demo.py Uploaded "hello.txt" (text/plain) Uploaded "hello.txt" (ap

我正在尝试使用Google的python API客户端库导出到本地驱动器

我正在使用,这是一个经过改编的示例。我已经验证了我的凭据是否有效,并且整天都在使用
create
update
方法,没有任何问题

当我从命令行运行
pythonapi_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)
然而,当我进入pythonshell以交互方式工作时,我无法运行它。下面是它的外观:

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.">
命令行和交互案例之间的差异令人费解,结果是我可以产生不同的错误,但还没有更接近于实际了解到底发生了什么。我正在执行完全相同的操作,粘贴与终端中打印的值相同的值


代码和示例数据都是公共的。有什么帮助吗

一些建议…1)您是否有任何方法查看底层http流量,2)对于500,您能否显示错误消息以及500状态,3)P11是关于什么的-它不是一个有效的ID,并将解释为什么找不到404。这可能与URL转义有关。你是对的——你必须去掉前导的“P”,这很好。不知道那是怎么进来的。尽管如此,我仍然没有脱离困境,因为我有一些非公开的表单,我正试图通过API进行管理,并且遇到了同样的困难。此
fileId
1fcdnhi54xsek7qng_MbLf4fh8DgYKqwbuBps2O8O_o在SDK文档页面上运行良好:。然而,相同的命令
data=DRIVE.files().export(fileId=“1fcdnhi54xsek7qng_MbLf4fh8DgYKqwbuBps2O8O_o”,mimeType=“text/csv”).execute()
仍然返回
404未在我的本地环境中找到的文件。我有一个理论,我现在就要尝试一下。@pinoyid好,我找到了。在我刚才在评论中提到的示例中,如果我从原始文件下载文本,然后使用API SDK重新上载相同的文件,那么新的
fileId
。真的被这搞糊涂了。一定和我本地的机器有关吧?我还没有按照你的建议检查http通信量,但可能与我访问文档的方式有关。无论如何,谢谢你的帮助。
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">