You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Google Drive上传时替换同名文件

解决Google Drive同名文件重复上传问题

要实现上传时替换同名文件,核心是先检查目标文件夹内是否存在同名文件,存在则更新,不存在则新建。修改后的代码如下:

# create drive api client
service = build('drive', 'v3', credentials=credentials)

file_name = 'test.csv'
target_folder_id = destination_folder_id

# 查询目标文件夹中是否存在同名文件
query = f"name='{file_name}' and '{target_folder_id}' in parents and trashed=false"
existing_files = service.files().list(
    q=query,
    fields='files(id)'
).execute().get('files', [])

media = MediaFileUpload(
    source_file_path,
    mimetype='text/csv'  # 修正:CSV文件正确MIME类型为text/csv
)

if existing_files:
    # 存在同名文件,执行替换更新
    file_id = existing_files[0]['id']
    file = service.files().update(
        fileId=file_id,
        media_body=media
    ).execute()
    print(f'已替换现有文件,文件ID: {file.get("id")}')
else:
    # 无同名文件,执行新建
    file_metadata = {'name': file_name, 'parents': [target_folder_id]}
    file = service.files().create(
        body=file_metadata,
        media_body=media,
        fields='id'
    ).execute()
    print(f'已创建新文件,文件ID: {file.get("id")}')

关键说明

  • 精准查询:通过文件名、目标文件夹ID、未被回收站标记三个条件定位文件,避免误匹配其他位置的同名文件或已删除文件。
  • MIME类型修正:原代码中的file/csv不符合标准,替换为text/csv能保证Drive正确识别文件类型。
  • 替换逻辑:找到已存在文件后,调用files().update方法传入文件ID和新的媒体内容,直接覆盖原文件内容,不会生成重复文件。

内容的提问来源于stack exchange,提问作者Shadow Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:05:22