背景

Google Drive给我们提供了很多管理和共享文件的简便方法,而且还是免费的(当然免费账户有一定存储限制)。但是,对于某些edu用户,Google Drive存储不仅是免费的,而且是无配额限制的。您是否想知道如何从数据科学的角度充分利用这种免费的云存储服务? 实际上,这并不困难,我们可以使用Python轻松实现访问和管理Google Drive文件。

设置Google Service API认证

首先,我们需要获取Google Service API的身份验证文件,以便我们的Python代码可以访问Google Drive。 为此,我们需要:

在Google Developer Console 页面建立一个新项目(如下图所示)

你可以给这个项目一个名字,也可以设为默认值。

点击”ENABLE APIS AND SERVICES”开通API服务(如下图所示).

然后页面会转到下面的截图。

在上面的搜索框内搜索”Google Drive”,我们会得到如下界面。

点击”Google Drive API”,进入下一个界面。

点击”ENABLE”开通Google Drive API服务,进入下一个界面。

点击”CREATE CREDENTIALS”创建密码信息。

在上面的截图中点击”client ID”,然后在下一个界面中点击”CREATE”,并下载创建成功的JSON密码文件如下。

下载的JSON文件就是Python程序读写Google Drive所需要的Google Serivces认证文件。

安装使用PyDrive

下面我们就可以通过在终端运行pip install pydrive安装PyDrive库,并使用PyDrive库管理和读写Google Drive文件。

下面的代码将完成Google Drive用户认证,并列出Google Drive根目录下的所有文件。需要说明的是,我们需要把上面步骤中下载的JSON文件另存为client_serets.json文件,并把它放到Python程序所在的存储文件下。

from pydrive.auth import GoogleAuth

from pydrive.drive import GoogleDrive

# Rename the downloaded JSON file to client_secrets.json

# The client_secrets.json file needs to be in the same directory as the script.

gauth = GoogleAuth()

drive = GoogleDrive(gauth)

# List files in Google Drive

fileList = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()

for file1 in file_list:

print('title: %s, id: %s' % (file1['title'], file1['id']))

每次运行上面的代码,程序都会自动打开一个浏览器页面让用户填写Google用户名和密码。为了避免每次都填写用户名和密码,我们可以创建一个settings.yaml文件,如下所示完成相关设置。settings.yaml文件的具体信息可参见PyDrive官方文档。

client_config_backend: settings

client_config:

client_id: your_client_id

client_secret: your_client_secret

save_credentials: True

save_credentials_backend: file

save_credentials_file: credentials.json

get_refresh_token: True

oauth_scope:

- https://www.googleapis.com/auth/drive.file

其中, client_id和client_secret可以通过下面所示的截图获得。

重新运行上面的Python代码,程序将要求您再次输入Google密码。 然后它将创建一个credientials.json文件。 再次运行时,Python会自动提取该文件中的内容完成身份验证,这样我们就不需要再次输入密码了。

利用下面的代码,我们就可以把本地文件上传到Google Drive指定的文件夹里。

# Upload files to your Google Drive

upload_file_list = ['google_console1.png', 'google_console2.png']

for upload_file in upload_file_list:

gfile = drive.CreateFile({'parents': [{'id': '1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t'}]})

# Read file and set it as a content of this instance.

gfile.SetContentFile(upload_file)

gfile.Upload() # Upload the file.

上面的代码将两个本地文件google_console1.png和google_console2.png上传到我的Google Drive文件夹test/中。 为此,PyDrive库将在Google Drive中创建两个文件,然后读取并将本地的两个文件上传到相应的文件中。 此处,我们需要提供相应Google Drive文件夹的id。 在此示例中,test文件夹的ID为1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。 小窍门:我们可以从浏览器中获取Google Drive文件夹ID。 例如,当我在Google Drive中打开test文件夹时,浏览器将地址显示为https://drive.google.com/drive/folders/1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。test文件夹的相应ID是浏览器地址栏中最后一个符号后的部分,即1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。

同样,我们也可以使用以下代码直接将文件写入Google Drive:

file1 = drive.CreateFile({

'parents': [{'id': '1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t'}],

'title': 'Hello.txt'}) # Create GoogleDriveFile instance with title 'Hello.txt'.

file1.SetContentString('Hello World!') # Set content of the file from given string.

file1.Upload()

我们也可以用下面的代码直接读取Google Drive里的文件。

file2 = drive.CreateFile({'id': file1['id']})

file2.GetContentString('Hello.txt')

总结

通过这篇文章,我们学习了如何使用PyDrive直接管理Google Drive中的文件(包括读写和创建)。 主要步骤如下:

设置Google DriveAPI并创建认证文件

安装PyDrive并完成身份验证

使用Python管理Google Drive文件(比如上传和读写)

更多PyDrive的使用和文件管理功能请参见PyDrive官方网站。

python google drive api_Python管理Google Drive文件相关推荐

  1. Google drive谷歌网盘下载副本文件无法调用IDM解决方法

    最近通过加入星标并复制产生副本文件来解决谷歌限制文件大小时,遇到了Google drive谷歌网盘下载副本文件无法调用IDM来进行下载,只能够使用浏览器直接下载. 但是直接下载原文件没有出现问题,可以 ...

  2. colab如何读取google drive(谷歌云盘)的文件

    使用colab训练深度学习模型的时候,需要读入本地采集好的数据集.这时候可以将数据集先上传到google drive云端硬盘,再在colab的notebook读取google drive的数据集(文本 ...

  3. linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件

    linux bash shell wget 下载google drive(谷歌云端硬盘)中大文件 wget --load-cookies /tmp/cookies.txt "https:// ...

  4. 如何使用 Google Colab (或其他 python 笔记本)读取谷歌硬盘的文件

    存档和上传 单独上传大量图像(或文件)需要很长时间,因为 Google Drive 必须为每个图像单独分配ID和属性.建议先归档数据集. 一种可能的归档方法是将包含数据集的文件夹转换为".t ...

  5. python部落翻译_python利用google翻译 翻译字幕文件

    python使用谷歌翻译api 翻译字幕文件 英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googlet ...

  6. Google Colaboratory中有多个py文件时的使用技巧

    更新(只需两步即可完成) 1.挂载云盘 from google.colab import drive drive.mount('/content/gdrive') 2.切换到指定文件夹 import ...

  7. python导入excel到access_如何使用Python访问(读取和写入)Google表格电子表格?

    我想知道是否可以为我提供一个使用python从Google文档/电子表格读取/写入的示例. 我确实在这里https://developers.google.com/google-apps/spread ...

  8. 我如何使用Python帮助我选择了Google Summer of Code '19的组织

    by Vaibhav Gupta 通过Vaibhav Gupta 我如何使用Python帮助我选择了Google Summer of Code '19的组织 (How I used Python to ...

  9. 用Python和Google AppEngine开发基于Google架构的应用软件

    用Python和Google AppEngine开发基于Google架构的应用软件 在研究了一段时间的Google AppEngine之后,我发现Google AppEngine是未来一个非常不错的开 ...

最新文章

  1. matlab讨论资金积累,资金积累、国民收入与人口增长的关系综合评估
  2. 车主无忧:天下武功,唯快不破,神策让我们快人一步
  3. thymeleaf th:if 案例
  4. javascript 模板引擎基本原理
  5. 用Java 编写菜单价格和的程序_使用JAVA 编写一个程序,显示5中商品价格,用户可以选择多种商品并在其后的文本框输入购买的数量。...
  6. 达尔文进化奖_使用Kydavra GeneticAlgorithmSelector将达尔文进化应用于特征选择
  7. java uuid静态方法_Java UUID version()方法与示例
  8. JAVA刷题方法整理
  9. linux下gdb调试查看源代码
  10. (转)JS页面间传值
  11. 凯撒密码及C语言python实现
  12. 看完就能学会FTP和DHCP✌️
  13. php随笔_PHP随笔 - 风清扬-深圳的个人页面 - OSCHINA - 中文开源技术交流社区
  14. 马克飞象的markdown语法和其它markdown语法的区别
  15. 外贸企业邮箱可以撤回邮件吗?如何撤回已发送的邮件?
  16. 《九日集训》打卡第二天
  17. SpringBoot:运行项目是报错org.apache.ibatis.builder.IncompleteElementException:
  18. 大学“电路分析基础”试题合集第四章
  19. 国密算法的ekey基本使用的说明
  20. Springboot 2.6.1 + Nacos 2.0.3 + Dubbo 3.0.2.1

热门文章

  1. CentOS查询端口占用和清除端口占用的程序
  2. Teradata QueryGrid整合最佳分析技术 拓展客户选择空间
  3. 基于光线追踪的渲染中景深(Depth of field)效果的实现
  4. Avg_row_length是怎么计算的?
  5. Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
  6. XML 命名空间(XML Namespaces)
  7. Android:Application
  8. 发布一个http请求封装类
  9. Nginx+Php(FastCGI、Php-fpm)+Mysql+Zend+Memcache+Phpmyadmin+MongoDB+TT安装
  10. H3C——路由策略和策略路由实例配置