Python 使用RESTAPI在google drive中创建新文件夹
如果google drive中不存在新文件夹,如何使用python在其中创建新文件夹? 我对谷歌API和python完全陌生 (我的帐户有一个访问令牌,我想使用它创建文件夹。) 创建文件夹Python 使用RESTAPI在google drive中创建新文件夹,python,google-api,google-drive-api,google-python-api,Python,Google Api,Google Drive Api,Google Python Api,如果google drive中不存在新文件夹,如何使用python在其中创建新文件夹? 我对谷歌API和python完全陌生 (我的帐户有一个访问令牌,我想使用它创建文件夹。) 创建文件夹 import json import requests headers = {"Authorization": "Bearer Token"} data = { "name": "name", "mimeType": "application/vnd.google-apps.folder"
import json
import requests
headers = {"Authorization": "Bearer Token"}
data = {
"name": "name",
"mimeType": "application/vnd.google-apps.folder"
}
r = requests.post("https://www.googleapis.com/drive/v3/files",
headers=headers,data = data)
print(r.text)
仅创建文件,而不是文件夹。我如何纠正这个问题?您的第一步是定义“仅当它不存在时”的含义。在Google Drive中,文件(文件夹只是一个具有特殊mime类型的文件)由其ID标识,而不是由其名称标识。所以我可以有很多文件夹,都是同名的 我假设“仅当它不存在时”实际上意味着“仅当具有给定名称的文件夹不存在时”。这些步骤是:-
name=foldername,trashed=false,mime type=application/vnd.google apps.folder
。确保您的files.list正确处理nextPageToken
如果结果计数=0,则files.create foldername
def get_文件夹_id(自身、文件夹、父项):
_r=无
尝试:
url='1〕https://www.googleapis.com/drive/v3/files?q={0}'. \
格式(报价)(
“mimeType='application/vnd.google apps.folder'”
“和名称='{0}'”
“和垃圾!=真的”
“和父母中的{1}”。格式(文件夹,父母),
安全=“~()*!.\”
)
)
_r=requests.get(url、标题={
“授权”:“承载{0}”.format(self.get\u access\u token()),
“内容类型”:self.file\u bean.get\u Content\u Type(),
})
_r、 为_状态()提出_
_dict=_r.json()
如果_dict和len中的'files'(_dict['files']):
返回_dict['files'][0]['id']
其他:
_f=自创建文件夹(文件夹,父文件夹)
如果:
返回
status,status\u message=self.get\u文件夹无效()
除了requests.exceptions.HTTPError:
status,status\u message=self.get\u http\u错误(\u r)
例外情况除外,如e:
记录器.异常(e)
status,status\u message=self.get\u未知\u错误()
def创建文件夹(自身、文件夹名称、父文件夹id):
url='1〕https://www.googleapis.com/drive/v3/files'
标题={
'Authorization':'Bearer{}'。格式(self.get_access_token()),#获取您的访问令牌
“内容类型”:“应用程序/json”
}
元数据={
“名称”:文件夹名称,#文件夹名称作为字符串
“parents”:[parent_folder_id],#parent folder id(=如果要在根目录中创建文件夹,则为“root”)
“mimeType”:“application/vnd.google apps.folder”
}
response=requests.post(url,headers=headers,data=json.dumps(元数据))
response=response.json()
如果“错误”未响应:
返回响应['id']#最后返回文件夹id
使用get_folder_id,如果文件夹不存在,它会在内部创建一个文件夹
PS:此代码是从我的作品中盲目复制的,如果您理解有任何困难,我可以详细说明答案。thx供发布。请注意,您的代码有一个bug。它需要在
文件的返回字段中包含nextPageToken。列出,如果不为空,则进行迭代。感谢我缺少“Content-Type”:“application/json”
-将创建该文件,但不在父文件夹中,并且没有名称