繁体   English   中英

如何使用 Google Drive API 和 Python 覆盖 CSV 文件?

[英]How to overwrite CSV Files using Google Drive API with Python?

我想创建一个简单的脚本,每天将多个 CSV 上传到我的驱动器。 目前这里是我的脚本。 这样做的问题是,每次我运行我的程序时,都会创建一个新的 CSV 文件而不是替换它。

CLIENT_SECRET_FILE ='Client_secret_QSCtest.json'
API_NAME = 'drive'
API_VERSION = 'v3'
SCOPES = ['https://www.googleapis.com/auth/drive']

service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)

def export_csv_file(file_path: str, parents: list=None):
    if not os.path.exists(file_path):
    print(f'{file_path} not found.')
    return
try:
    file_metadata = {
        'name' : os.path.basename(file_path).replace('.csv',''),
        'mimeType' : 'application/vnd.google-apps.spreadsheet',
        'parents' : parents
    }
       
    media = MediaFileUpload(filename=file_path, mimetype='text/csv')

    response = service.files().create(
       media_body=media,
       body=file_metadata 
    ).execute()

    print(response)
    return response

except Exception as e:
    print(e)
    return


csv_files = os.listdir('./')

for csv_files in csv_files:
   export_csv_file(os.path.join('', csv_files))
   export_csv_file(os.path.join('', csv_files), parents=['1apjzSu8fugs6EvGwJVof3MDGlhZXoT_G'])

此代码将我的桌面文件夹中的所有 CSV 文件成功创建到 Google Drive 位置,但是我怎样才能使它覆盖以前创建的文件而不是每次都创建新版本?

谢谢!

您正在运行一个文件。 创造

  response = service.files().create(
       media_body=media,
       body=file_metadata 
    ).execute()

如果要更新现有文件,则要使用File.update

   response = service.files().update(
    fileId=file_id,
    body=file_metadata ,
    media_body=media).execute()

您需要做的是执行 file.list 以检查具有该名称和 mimetype 的文件是否已存在,如果存在,则使用其 fileId 您可以更新该文件。

如果您不知道如何搜索文件,请检查 file.list 的 q 参数。 它可以让您按名称、mimetype 和目录搜索文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM