python - 在谷歌驱动器上创建一个文件夹(如果不存在)并使用 Python 脚本将文件上传到它

标签 python google-api-python-client pydrive

到目前为止,我可以将文件上传到文件夹(如果存在)。我想不出一种方法来创建一个。因此,如果该文件夹不存在,我的脚本就会终止。

import sys
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gpath = '2015'
fname = 'Open Drive Replacements 06_01_2015.xls'

gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)

file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file1 in file_list:
    if file1['title'] == gpath:
        id = file1['id']

file1 = drive.CreateFile({'title': fname, "parents":  [{"kind": "drive#fileLink","id": id}]})
file1.SetContentFile(fname)
file1.Upload()

如果gpath不存在,你能帮我修改上面的代码来创建文件夹吗?

最佳答案

基于documentation , 应该是

file1 = drive.CreateFile({'title': fname, 
    "parents":  [{"id": id}], 
    "mimeType": "application/vnd.google-apps.folder"})

更新:截至 2020 年 4 月,documentation (v3) 已更新 API 文档并显示:

folder_id = '0BwwA4oUTeiV1TGRPeTVjaWRDY1E'
file_metadata = {
    'name': 'photo.jpg',
    'parents': [folder_id]
}
media = MediaFileUpload('files/photo.jpg',
                        mimetype='image/jpeg',
                        resumable=True)
file = drive_service.files().create(body=file_metadata,
                                    media_body=media,
                                    fields='id').execute()
print 'File ID: %s' % file.get('id')

关于python - 在谷歌驱动器上创建一个文件夹(如果不存在)并使用 Python 脚本将文件上传到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585166/

相关文章:

python - pysftp putfo 在 SFTP 服务器上创建一个空文件,但不传输来自 StringIO 的内容

python - 创建列表字典的一行代码

python - ImportError : No module named googleapiclient. 发现

python - Pandas groupby 应用组合某些组但不组合其他组的功能

python - 使用谷歌应用引擎将文件插入谷歌驱动器。使用的python客户端api

python - 如何将 blob 复制到存储桶中的特定文件夹?

python - 使用pydrive从google share drive下载文件,文件存在,但API返回404 File not found错误

python - 从 Colaboratory 删除文件而不移动到废纸篓

python - 从非 root 用户执行 root 所需的脚本