如何使用PyDrive一步完成Google Drive文件夹创建与文件上传
PyDrive创建文件夹+自动上传文件整合方案
核心逻辑非常直接:调用Upload()完成文件夹创建后,PyDrive返回的文件夹对象会自带云端生成的唯一ID,直接提取这个ID作为后续上传的父目录参数即可,无需手动硬编码文件夹ID。
完整代码
使用前请确保已经安装PyDrive依赖,完整单流程执行代码如下:
import os from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive # 初始化Drive授权 gauth = GoogleAuth() drive = GoogleDrive(gauth) # 创建云端目标文件夹 folder_name = 'My_new_folder' target_folder = drive.CreateFile({ 'title': folder_name, 'mimeType': 'application/vnd.google-apps.folder' }) target_folder.Upload() # 提取新建文件夹的云端唯一ID target_folder_id = target_folder['id'] # 遍历本地目录上传文件到新建文件夹 local_dir = "C:/Users/Singh/screenshots/" for file_name in os.listdir(local_dir): local_path = os.path.join(local_dir, file_name) # 仅上传普通文件,跳过子目录避免IO报错 if os.path.isfile(local_path): upload_obj = drive.CreateFile({ 'parents': [{'id': target_folder_id}], 'title': file_name }) upload_obj.SetContentFile(local_path) upload_obj.Upload()
关键说明
- 原独立运行的上传代码需要手动复制提前创建好的文件夹固定ID,整合后不需要任何手动查询ID的操作,创建文件夹步骤完成后会自动传递ID给上传逻辑,实现全流程单步执行
- 新增了文件类型判断,原代码直接遍历目录下所有条目,遇到子文件夹时调用
SetContentFile会抛出错误,加判断后可以规避这个问题 - 对重名变量做了区分,避免原两段代码都用
folder做变量名带来的逻辑覆盖问题
内容的提问来源于stack exchange,提问作者Singh
相关产品推荐
相关产品推荐

