python google drive api_Python管理Google Drive文件

背景

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官方网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Struts2学习---基本配置,action,动态方法调用,action接收参数

首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts2513 然后解压将里面的app文件夹下的示例war文件解压,将里面的…

实现对数组找最大最小数

实现对数组找最大最小数 在用js的过程中我们往往会需要找到一个数组里最大或最小的数, 但是我们不能直接用Math.max(Arr)或Math.min(Arr),因为max()里面不能填数组,只能填连续的数。 那我们该怎么办呢? 一定…

开源免费 低代码平台开源_行动透明:免费代码营现已开源

开源免费 低代码平台开源by freeCodeCamp通过freeCodeCamp 行动透明:免费代码营现已开源 (Transparency in Action: Free Code Camp is Now Open Source) We’re thrilled to announce that Free Code Camp is now fully open-source. Now you can fork our code b…

vc mysql init 崩溃_故障分析 | 崩溃恢复巨慢原因分析

作者:xuty本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、现象有个 MySQL 5.7 开发库异常挂掉后,奔溃恢复一直处于如下位置,且持续了 2 小时左右才起来…

surfaceview结束后怎么处理_污泥压滤机处理后的污泥怎么处置

在污泥处理处置中,污泥压滤机处理污泥只是对污泥进行脱水,并没有实现污泥资源化处置。再进行污泥“减量化、无害化、资源化”处理时,许多企业用污泥压滤机对污泥脱水处理后就不知道怎么继续处置了,从而使污泥饼无处可去&#xff0…

js数组详解

1,什么是数组数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组…

[转载]linux内存映射mmap原理分析

转自:http://blog.csdn.net/yusiguyuan/article/details/23388771 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空…

判断一个指针有没有free_Free Code Camp的每个人现在都有一个档案袋

判断一个指针有没有freeby freeCodeCamp通过freeCodeCamp Free Code Camp的每个人现在都有一个档案袋 (Everyone at Free Code Camp now has a Portfolio) Note: we originally published this on our now-defunct blog in January of 2015.注意:我们最初是在2015年…

冒泡、快速排序小结

1.冒泡排序 (1) 比较领近的两个数 (2) 如果左边的比右边的数字大,则交换位置 (3) 向右移动一位,继续比较相邻的两个数 排序示例: 一轮排序结束后,最大值的位置已经移动最右端,再次如此循环,最终经过n-1次则…

python中until函数_等待应用程序窗口:python中的pywinauto.timings.WaitUntilPasses

我试图在pywinauto中使用waituntilpasses来给应用程序时间打开一个新窗口.我已使用SWAPY识别窗口详细信息.为了进行测试,我手动打开了子窗口,因此WaitUntilPasses应该立即看到该窗口,但是没有看到.语法显示为OK,因为我可以找到并打印find_windows的输出,如下所示:xx…

synchronized 异常_由浅入深,Java 并发编程中的 Synchronized

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用:确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得…

mysql正则通配符全解_mysql正则表达式与通配符

扩展正则表达式的一些字符是: “.”匹配任何单个的字符。 一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9…

dos常用文件操作命令

1、DIR 含义: 显示指定目录下的文件和子目录列表 类型: 内部命令 格式: DIR[drive:][path][filename][/p][/w][/A[[:]attributes]][/O[[:]sortorder]][/S][/B][/L] 举例: DIR DIR D:\px2 DIR D:\px2\*.txt DIR /A:D /O:D 2、COPY…

使您的Java代码闻起来很新鲜

by Marco Massenzio由Marco Massenzio 使您的Java代码闻起来很新鲜 (Make your Java code smell nice and fresh) A few years ago I joined a startup working on a cloud enterprise service that was originally built by an offshore team.几年前,我加入了一家…

MySQL时间戳与日期格式的相互转换

MySQL时间戳与日期格式的相互转换,PHP时间戳与日期格式的相互转换 MySQL: 获取当前时间SELECT NOW(); // 2018/10/11 14:22:51 时间日期格式转换成时间戳格式,UNIX_TIMESTAMP()SELECT UNIX_TIMESTAMP(NOW()); // 1539238930 时间戳格式转换成时间日期格式…

Linux内存分配机制之伙伴系统和SLAB

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6539590.html 内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。这就要求内核采取灵活而恰当的内存分配策略。通常,内存分配一般有两种情况&#xff1a…

this.$modal.confirm 自定义按钮关闭_自定义函数,让你玩转Excel得心应手

让“自动更正”输入统一的文本,你是不是经常为输入某些固定的文本,如《电脑报》而烦恼呢?那就往下看吧。1.执行“工具→自动更正”命令,打开“自动更正”对话框。2.在“替换”下面的方框中输入“pcw”(也可以是其他字符,“pcw”用小写),在“替换为”下面的方框中输…

php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询

这是原始数据,并希望根据得分(count(tbl_1.id))对它们进行排名.[tbl_1]id | name1 | peter2 | jane1 | peter2 | jane3 | harry3 | harry3 | harry3 | harry4 | ron因此,制作临时表(tbl_2)来计算每个id的分数.SELECT id, name, COUNT( id ) AS scoreFROM tbl_1GROUP BY idORDER…

CCF-CSP 最大的矩形

问题描述在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。请找出能放在给定直方图里面积最大的矩…

Stack Overflow 2016年对50,000名开发人员进行的调查得出的见解

Today, Stack Overflow released the results of their 2016 survey of more than 50,000 developers.今天,Stack Overflow发布了他们2016年对50,000多名开发人员进行的调查的结果。 I’ve combed through this big document to bring you the most surprising ins…