如何在Google Colab中获取Google Drive文件的最后编辑者信息
获取Google Drive文件最后编辑者信息的解决方案
首先,你当前的代码存在一个小问题:file_path在调用os.path.getmtime(file_path)之后才定义,会导致报错,需要调整顺序。
要获取文件的最后编辑者信息,仅通过os模块无法实现,必须借助Google Drive API来查询文件的详细元数据。以下是修改后的完整代码,包含获取最后编辑者的逻辑:
!pip install kora google-api-python-client from kora.xattr import get_id from google.colab import auth auth.authenticate_user() import gspread_dataframe as gd import gspread from google.auth import default import pandas as pd from googleapiclient.discovery import build import os import time import datetime from google.colab import drive # 挂载Google Drive drive.mount('/content/gdrive') # 初始化Drive API服务 creds, _ = default() service = build('drive', 'v3', credentials=creds) root_path = "/content/gdrive/myRoot/" # 遍历目录下所有文件 for (root, directories, files) in os.walk(root_path): for file in files: # 先构建文件路径 file_path = os.path.join(root, file) # 获取最后修改时间 ctime = os.path.getmtime(file_path) last_update = datetime.datetime.strptime(time.ctime(ctime), "%c") # 获取文件ID fid = get_id(file_path) # 通过Drive API获取最后编辑者信息 try: file_metadata = service.files().get( fileId=fid, fields='lastModifyingUser' # 指定只获取最后编辑者字段,减少请求数据量 ).execute() last_editor = file_metadata.get('lastModifyingUser', {}) # 提取编辑者的名称和邮箱 editor_name = last_editor.get('displayName', '未知') editor_email = last_editor.get('emailAddress', '未知') print(f"文件: {file} | 最后编辑者: {editor_name} ({editor_email}) | 最后修改时间: {last_update}") # 这里可以将数据存入DataFrame或其他存储 except Exception as e: print(f"获取文件 {file} 编辑者信息失败: {str(e)}")
关键说明:
- 安装
google-api-python-client库,用于调用Google Drive API - 初始化Drive API服务时,使用已有的认证凭据
creds - 调用
service.files().get()时,通过fields参数指定只获取lastModifyingUser字段,提升请求效率 lastModifyingUser返回的是一个字典,包含displayName(显示名称)和emailAddress(邮箱)等信息- 增加异常处理,避免因权限问题或文件不存在导致程序中断
内容的提问来源于stack exchange,提问作者sangeun jo
相关产品推荐
相关产品推荐

