python-3.x - Python 3.x - 如何使用请求补丁更新 Google Drive 上的 CSV 文件
问题描述
我正在尝试使用 requests.patch() 更新存储在 Google Drive 文件夹中的 .CSV 文件。请求成功并且文件得到更新,但是当我打开它时,我看到了这个.
我不明白为什么将“Content-Disposition”、“Content-Type”等添加到我的文件中。有什么办法可以在没有它们的情况下更新 .CSV?
我的代码:
headers = {'Authorization': token}
para = {'parents': 'folder_id'}
files = {
'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
'file': open('file.csv', 'rb')
}
url = 'https://www.googleapis.com/upload/drive/v3/files/'+file_id+'?uploadType=media'
r=requests.patch(url, headers = headers, files = files)
print(r.text)
任何帮助是极大的赞赏。
解决方案
请求正文似乎是分段上传。那么如何修改如下?
从:
url = 'https://www.googleapis.com/upload/drive/v3/files/'+file_id+'?uploadType=media'
到:
url = 'https://www.googleapis.com/upload/drive/v3/files/'+file_id+'?uploadType=multipart'
参考:
如果这不是你想要的,我很抱歉。
添加:
当您要移动文件所在的文件夹时,请进行如下修改。para = {'parents': 'folder_id'}
在这种情况下不使用。
到:
url = 'https://www.googleapis.com/upload/drive/v3/files/'+file_id+'?uploadType=multipart&addParents=### new folderId ###&removeParents=### current folderId ###'
参考:
推荐阅读
- php - WordPress 将 php 代码运行到 the_content 循环中
- c# - 带点的字符串上的正则表达式
- javascript - 如何使用ajax将从jquery for循环创建的输入值发送到php
- java - 在 API 响应中返回 Enum 的值而不是 Spring Boot 中的名称
- configuration - Wildfly - 读取配置文件时的行为
- git - Git:从某个提交重命名分支
- c# - 更新字段为空
- android - 如何读取特征数据
- machine-learning - Dyna-Q 与规划与 n 步 Q 学习
- node.js - 防止其他应用读取 Keytar 保存的密码