上传和下载文件到google drive/Local pc

1 上传

参考:使用 Python 将文件上传到 Google 云端硬盘_迹忆客

Upload file to google drive using Python - CodeSpeedy (没起作用,但可以参考一下)

第 1 步:Google API Playground

我们可以通过搜索 Google 找到更多关于 Google API Playground 的信息。 我们必须单击第一个链接才能继续前进。

搜索 Google api playground

选择第一个链接后,我们会自动进入下一个页面,如下:

重定向到 Google 开发人员

第 2 步:Google 云端硬盘 API

在 Google Developers 页面上,我们必须找到 Drive API 以及其他选项。

我们将搜索名为 Drive API 3 的选项并选择它。 当我们选择它时,一个链接列表将出现在我们面前。

搜索 Drive api v3

我们必须选择链接列表中显示的第一个链接。 如果我们要选择任何东西,我们需要先点击它,然后我们会看到它旁边出现一个复选标记。

所以在这里我们将点击第一个链接。

单击授权 api

在大约三到五秒钟的短暂等待后,我们将被重定向到我们的 Gmail 帐户。

第 3 步:Gmail 帐户

单击我们要将文件上传到其驱动器的 Gmail 帐户,然后按照屏幕上的说明进行操作。 屏幕上将显示取消和允许两个选项。

要继续,我们必须从下拉菜单中选择允许。 当我们点击 Google 帐户时,Google Auth 会询问我们是否要允许该操作。

允许 Gmail 帐户

第四步:授权码

当我们最终放弃并单击“允许”按钮时,我们将被重定向到一个新页面,我们可以在其中检索我们的权限代码。

代码授权

另一方面,我们不会复制它,因为我们不需要授权码。 相反,我们将单击交易授权码的按钮来访问令牌。

点击兑换授权码

单击按钮后,我们将获得访问令牌。

访问令牌

在处理 Python 代码时,我们需要复制访问令牌并将其存储在安全的地方。 我们将使用 Python 来方便将文件上传到我们的 Google 云端硬盘,并且需要访问令牌。


在 Google Drive 中上传文件的 Python 代码

第 1 步:库

首先,导入所需的库和模块。 在这种情况下,我们必须导入 JSON 和请求。

我们使用 JSON 上传文件和请求 API 以允许我们上传文件。

示例代码:

import json
import requests

第 2 步:访问令牌

其次,我们将创建一个字典并使用访问令牌作为其中一个键的值。 在这个场景中,授权是关键,访问令牌是价值。

示例代码:

headers = {"Authorization": "Bearer Paste your access token here"}

我们可以在 Bearer 后面复制并粘贴 access token,只用空格。

第 3 步:文件名

现在我们可以创建另一个字典并为我们要上传的文件命名。

示例代码:

para = {
    "name": "##name for python uploaded file####",
}

第 4 步:路径

现在我们必须访问我们要上传的文件。 为此,我们必须提供文件的路径。

Python 将按照路径到达文件并打开它。

示例代码:

files = {
    'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
    'file': open("Pythonfile.jpg", "rb")
}

第 5 步:请求

现在我们将使用 Python 的 requests 模块来请求 Google Drive APIs 上传文件。

示例代码:

r = requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers=headers,
    files=files
)

第 6 步:打印

现在我们将上述所有步骤与运行代码结合起来。 最后,我们将使用 print 语句来查看我们的代码是否有效。

示例代码:

import json
import requests
headers = {"Authorization": "Bearer Paste your access token here"}
para = {
    "name": "##name for python uploaded file####",
}
files = {
    'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
    'file': open("Pythonfile.jpg", "rb")
}
r = requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers=headers,
    files=files
)
print(r.text)

输出:

{
 "kind": "drive#file",
 "id": "1Furfhe8BFbkEhXn1xcYPr8jYAACNpfV7p",
 "name": "##python uploaded image####",
 "mimeType": "image/jpeg"
}

如果我们没有错误地得到这个输出,我们的代码工作正常,我们想要上传的文件必须上传到 Google Drive。

第 7 步:验证

我们可以去Google Drive查看文件是否上传成功。 我们 100% 确定我们的文件将按照上述步骤上传到驱动器中。

使用 Python,我们现在可以将文件上传到 Google Drive。 设置此过程很简单,只需几分钟,仅此而已。

# https://www.jiyik.com/tm/xwzj/prolan_6706.html

import json
import requests
headers = {"Authorization": "Bearer ya29.a0AfB_..."}
para = {
    "name": "Files/img.png",
}
files = {
    'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
    'file': open("img.png", "rb")
}
r = requests.post(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
    headers=headers,
    files=files
)
print(r.text)

2  下载

参考:

ubuntu 使用gdown下载Google Drive文件, 文件夹, 下载别人分享的文件夹_谷歌云盘怎么下载别人分享的文件夹-CSDN博客google drive文件下载(python包)__less is more的博客-CSDN博客
 

需要注意google drive上的文件authenticate 'Anyone with link'

点击sharing,复制link:https://drive.google.com/file/d/1ZHC_IyqcPoq_WAQpVo94GAnmIu22QjYi/view?usp=sharing

提取标识符:1ZHC_IyqcPoq_WAQpVo94GAnmIu22QjYi

# img
#url = 'https://drive.google.com/uc?id=标识符'
url = 'https://drive.google.com/uc?id=1ZHC_IyqcPoq_WAQpVo94GAnmIu22QjYi'
output = 'downloaded_file.png'
gdown.download(url, output, quiet=False)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue路径中“@/“代表什么

举例&#xff1a; <img src"/../static/imgNew/adv/tupian.jpg"/>其中&#xff0c;/是webpack设置的路径别名&#xff0c;代表什么路径&#xff0c;要看webpack的build文件夹下webpack.base.conf.js里面对于是如何配置&#xff1a; 上图中代表src,上述代码就…

出海路上离不开的Email营销,教你这样来优化!

随着互联网的不断发展&#xff0c;Email已经成为人们工作和生活中不可或缺的一部分。尤其是对于我们这些跨境企业而言&#xff0c;发送Email是一个促进销售和维护客户关系的良好渠道。而且邮件的价格也是比较低廉的&#xff0c;很适合用于日常推广营销&#xff0c;所以人手几个…

论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election

论文链接&#xff1a; https://arxiv.org/abs/2008.08370 目录 摘要&#xff1a; Introduction Contributions Related Work Dataset Method Overview Surfacing Coordination in 2019 UK GE Analysis of Coordinated Behaviors 摘要&#xff1a; 协调的在线行为是信息…

嵌入式软件工程师面试题——2025校招专题(三)

说明&#xff1a; 面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但在这里博主希望每一个题目&#xff0c;大家都要…

在nodejs中实现实时通信的几种方式

在nodejs中实现实时通信的几种方式 在当今世界中&#xff0c;实时通信至关重要。无论是聊天应用程序还是实时体育更新&#xff0c;实时通信都是保持用户活跃度所必需的。Node.js 因其速度、可扩展性和可靠性而成为开发实时应用程序的流行工具。在本文中&#xff0c;我们将探讨…

爬虫进阶-反爬破解7(逆向破解被加密数据:全方位了解字体渲染的全过程+字体文件的检查和数据查看+字体文件转换并实现网页内容还原+完美还原上百页的数据内容)

目录 一、全方位了解字体渲染的全过程 1.加载顺序 2.实践操作&#xff1a;浏览器中调试字体渲染 3.总结&#xff1a; 二、字体文件的检查和数据查看 1.字体文件的操作软件 2.映射关系的建立 3.实践操作&#xff1a;翻找样式和真实内容 4.总结&#xff1a; 三、字体文…

Tp框架如何使用事务和锁,还有查询缓存

1.事务 在ThinkPHP框架中&#xff0c;可以使用think\db\Transaction类来实现事务。 use think\Db; use think\db\Transaction;// 开始事务 Db::startTrans();try {// 执行数据库操作Db::table(user)->where(id, 1)->update([name > John]);// 提交事务Db::commit(); }…

swagger stub https无法访问

有个app的以前别人写的假服务用http访问可以&#xff0c;但是用https去访问就不行 看官方说schema里面配置一个https就可以了但是对我那个server没有用&#xff1a; 官方参考链接&#xff1a; API Host and Base Path 后来领导给我发了个这个&#xff1a; Node.js Express …

解决方法:从客户端(---<A href=“http://l...“)中检测到有潜在危险的 Request.Form 值。

从客户端(-----<A href"http://l...")中检测到有潜在危险的 Request.Form 值。 解决方法&#xff1a;应该是不同的.net Framework版本对代码的校验不同&#xff0c;造成在高版本操作系统&#xff08;即高.net Framework版本校验&#xff09;不兼容&#xff0c;可…

【疯狂Java】数组

1、一维数组 (1)初始化 ①静态初始化&#xff1a;只指定元素&#xff0c;不指定长度 new 类型[] {元素1,元素2,...} int[] intArr; intArr new int[] {5,6,7,8}; ②动态初始化&#xff1a;只指定长度&#xff0c;不指定元素 new 类型[数组长度] int[] princes new in…

自组织映射Python实现

自组织映射&#xff08;Self-organizing map&#xff09;Python实现。仅供学习。 #!/usr/bin/env python3""" Self-organizing map """from math import expimport toolzimport numpy as np import numpy.linalg as LAfrom sklearn.base import…

Vue 项目进行 SEO 优化

SSR 服务器渲染 服务端渲染, 在服务端 html 页面节点, 已经解析创建完了, 浏览器直接拿到的是解析完成的页面解构 关于服务器渲染&#xff1a;Vue 官网介绍 &#xff0c;对 Vue 版本有要求&#xff0c;对服务器也有一定要求&#xff0c;需要支持 nodejs 环境。 优势: 更好的 …

如何避免阿里云对象储存OSS被盗刷

网站app图片的云端存储离不开对象存储oss,而最难为的问题就是app做的出名了&#xff0c;少不了同行的攻击&#xff0c;包含ddos&#xff0c;cc攻击以及oss外链被盗刷&#xff01; 防盗链功能通过设置Referer白名单以及是否允许空Referer&#xff0c;限制仅白名单中的域名可以访…

【嵌入式项目应用】__cJSON在单片机的使用

目录 前言 一、JSON和cJson 二、cJSON是如何表示JSON数据的 三、如何封装完整的JSON数据 1. 先将串口打通&#xff0c;方便电脑查看log日志。 2. 增加cjson.c文件&#xff0c;已经在main.c中 3. 准备打包如下的JSON包 4. 代码部分&#xff0c;先将几个部分初始化指针 …

rust学习——智能指针

智能指针 在各个编程语言中&#xff0c;指针的概念几乎都是相同的&#xff1a;指针是一个包含了内存地址的变量&#xff0c;该内存地址引用或者指向了另外的数据。 在 Rust 中&#xff0c;最常见的指针类型是引用&#xff0c;引用通过 & 符号表示。不同于其它语言&#xf…

量子革新加速!法国量子即服务公司ColibriTD完成100万欧元融资

​&#xff08;图片来源&#xff1a;网络&#xff09; 法国量子即服务初创公司ColibriTD已完成100万欧元的种子轮融资&#xff0c;此次融资由Earlybird-X基金以及一群天使投资人领投&#xff0c;这笔资金将用于开发量子即服务平台。 ColibriTD的创始人有两位。创始人Laurent …

线性代数-Python-03:矩阵的变换 - 手写Matrix Transformation及numpy中的用法

文章目录 一、代码仓库二、旋转矩阵的推导及图形学中的矩阵变换2.1 让横坐标扩大a倍&#xff0c;纵坐标扩大b倍2.2 关于x轴翻转2.3 关于y轴翻转2.4 关于原点翻转&#xff08;x轴&#xff0c;y轴均翻转&#xff09;2.5 沿x方向错切2.6 沿y方向错切2.7 旋转2.8 单位矩阵2.9 矩阵的…

使用el-tree问题之清空勾数据不生效

一、问题场景描述 在做角色菜单按钮权限时&#xff0c;多数采用树结构勾选数据&#xff0c;这里使用了element中的el-tree。如下图&#xff1a; 1、我给角色1勾选了权限列表数据的前三行&#xff0c; 点击弹框的确定 2、紧接着点击角色2的权限按钮&#xff0c;给角色2分配修…

分享一款基于 AI 的 Chrome 插件

最近使用大模型比较多&#xff0c;公司虽然提供了免费的 ChatGPT 但是需要跳转特定页面才能访问&#xff0c;比较麻烦&#xff0c;于是就想到是否可以开发一款类似于有道词典一样的 Chrome 插件&#xff0c;可以在任意页面使用&#xff0c;虽然市面上也有类似的插件&#xff0c…

12.4 组播鼠标批量执行

组播模式相比单播模式可以提高网络的效率和带宽利用率&#xff0c;因为组播数据包只需要发送一次&#xff0c;就可以被多个接收者接收&#xff0c;而不需要每个接收者都单独发送一份数据包。这在需要同时向多个接收者发送相同数据的场景下特别有用&#xff0c;如视频会议、在线…