Python google drive的pydrive库未使用请求下载所请求格式的文件
我有一个简单的脚本,用于从我的google drive帐户中获取一个文件并进行更新。我在验证和访问驱动器方面没有问题。该文件在驱动器上以谷歌电子表格的形式存在。因此,当我拥有pydrive文件对象时,我会通过Python google drive的pydrive库未使用请求下载所请求格式的文件,python,csv,python-requests,pydrive,Python,Csv,Python Requests,Pydrive,我有一个简单的脚本,用于从我的google drive帐户中获取一个文件并进行更新。我在验证和访问驱动器方面没有问题。该文件在驱动器上以谷歌电子表格的形式存在。因此,当我拥有pydrive文件对象时,我会通过google_文件['exportLinks']['text/csv']获取csv格式的文件URL。这在过去是有效的,但是今天我在一个新文件中尝试了同样的方法,我没有得到数据的csv格式,而是一直得到HTML。此外,如果我从我的google_文件['exportLink']['text/cs
google_文件['exportLinks']['text/csv']
获取csv格式的文件URL。这在过去是有效的,但是今天我在一个新文件中尝试了同样的方法,我没有得到数据的csv格式,而是一直得到HTML。此外,如果我从我的google_文件['exportLink']['text/csv']
中复制并粘贴链接并将其放入浏览器,浏览器将开始按要求以csv格式下载文件。我真的不知道发生了什么,尤其是因为这在过去是有效的
下面是我的代码的基本功能:
drive = GoogleDrive(gauth)
drivefiles = drive.ListFile().GetList()
form_file = None
for f in drivefiles:
if f['title'] == formFileName:
form_file = f
break
output = requests.get(form_file['exportLinks']['text/csv'])
print output.text #this ends up being HTML, not text/csv
以前有没有其他人见过这个问题?我是否应该尝试删除并重新添加驱动器上的google电子表格文件
编辑:更新
因此,在将google drive上的文件权限从只能与共享该文件的人访问更改为可由所有人访问/编辑后,我可以访问和下载该文件。clients_secret.json文件是否允许特定的google drive用户进行安全授权,或者这是一个通用密钥,允许任何人在该特定会话中访问google API?如果文件只与有限的一组电子邮件地址共享,是否需要通过http请求发送任何特殊数据?我还发现处理google drive api的特性有点棘手。我已经围绕GoogleDriveAPI编写了一个包装器,这使得处理它相对容易。看看是否有帮助:- 示例代码:-
file_id = 'abc'
file_access_token = '34244324324'
scope = 'https://www.googleapis.com/auth/drive.readonly'
path_to_private_key_file = '#'
service_account_name = '284765467291-0qnqb1do03dlaj0crl88srh4pbhocj35@developer.gserviceaccount.com'
drive_client = GoogleDriveClient(
scope = scope,
private_key = open(path_to_private_key_file).read(),
service_account_name = service_account_name)
file = drive_client.get_drive_file(file_id, file_access_token)
当然,您需要根据您的配置文件更改访问变量。如果其他人对此有问题,将驱动器中的文件设置更改为“人人可以查看”解决了问题-似乎存在一些权限限制。建议您在调试时将文件的权限更改为限制性最小的设置(尽可能)。这很好,但这与我已经做的有什么不同?