linux 服务器利用阿里网盘API实现文件的上传和下载

文章目录

  • 背景
  • 脚本
      • 初始化
    • 阿里云盘API工具 aligo
      • 安装aligo
      • aligo教程
      • 实战
      • parse.py
  • 演示
    • 上传文件
    • 上传文件夹
    • 下载文件
    • 下载文件夹

背景

最近在用ubuntu系统做实验,而ubuntu 系统的文件上传和下载操作很麻烦;
于是便打算使用阿里网盘的API 进行文件下载与上传;

其实更主要的是想 备份本地文件到网盘和从网盘下载文件

脚本

初始化

阿里云盘API工具 aligo

点击查看Aligo github
方便在linux服务器上使用,只需要填入一个刷新的token就可以了。

安装aligo

pip install aligo

aligo教程

请读者自行浏览

  • wiki
  • 案例

实战

chrome抓包 获得refresh_token
在这里插入图片描述

import aligo
from aligo import Aligo
refresh_token = "抓包拿到的refresh_token"
ali = Aligo(refresh_token=refresh_token)

查看你的用户信息,就知道是否登录成功了

print(ali.get_user())

parse.py

import argparseimport aligo
from aligo import Aligoali = Aligo()def down_file_or_folder(remote_path, local_folder, is_file=False):file = (ali.get_file_by_path(remote_path)if is_fileelse ali.get_folder_by_path(remote_path))if is_file:ali.download_file(file_id=file.file_id, local_folder=local_folder)else:ali.download_folder(folder_file_id=file.file_id, local_folder=local_folder)def upload_file_or_folder(local_file_folder, remote_folder, is_file=False):remote_folder_id = ali.get_folder_by_path(remote_folder).file_idif is_file:ali.upload_file(file_path=local_file_folder, parent_file_id=remote_folder_id)else:ali.upload_folder(folder_path=local_file_folder, parent_file_id=remote_folder_id)def main():parser = argparse.ArgumentParser(description="Download file or folder from Aliyun Drive. 默认下载 & 文件夹")parser.add_argument("-up", "--is_up", action="store_true", help="默认是下载模式")parser.add_argument("-f", "--is_file", action="store_true", help="默认是上传和下载文件夹")parser.add_argument("-r","--remote",action="store",required=True,metavar="REMOTE_FOLDER_PATH",help="specify the remote file or folder path to download or upload.",)parser.add_argument("-l","--local",action="store",required=True,metavar="LOCAL_FOLDER_PATH",help="specify the local file or folder path to download or upload.",)args = parser.parse_args()print(args.__dict__)is_upload, is_file, remote, local = (args.is_up,args.is_file,args.remote,args.local,)# 上传if is_upload:print("上传...")upload_file_or_folder(local_file_folder=local, remote_folder=remote, is_file=is_file)else:print("下载...")down_file_or_folder(remote_path=remote, local_folder=local, is_file=is_file)main()
Download file or folder from Aliyun Drive. 默认下载 & 文件夹options:-h, --help            show this help message and exit-up, --is_up          不填是下载,填是上传-f, --is_file         不填默认是上传和下载文件夹,填了上传和下载文件-r REMOTE_FOLDER_PATH, --remote REMOTE_FOLDER_PATHspecify the remote file or folder path to download orupload.-l LOCAL_FOLDER_PATH, --local LOCAL_FOLDER_PATHspecify the local file or folder path to download orupload.

演示

在upload_test文件夹下,有up.txt文件;
请添加图片描述

在阿里云盘,创建 tmp 文件夹,再在其下创建 parse文件夹
请添加图片描述

上传文件

python parse.py -f -up -r tmp/parse -l upload_test/up.txt

上述脚本实现将 本地 upload_test/up.txt 上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件上传成功:
请添加图片描述

上传文件夹

python parse.py -up -r tmp/parse -l upload_test

上述脚本实现,将 本地 upload_test 文件夹上传到阿里网盘的 tmp/parse 文件夹下;
如下图所示,文件夹上传成功:
在这里插入图片描述

下载文件

python parse.py -f -r tmp/parse/up.txt -l down_test

上述脚本实现,将 阿里网盘的 tmp/parse/up.txt文件下载到本地 down_test 文件下;
如下图所示,up.txt 文件下载成功:
在这里插入图片描述

下载文件夹

python parse.py -r tmp/parse/upload_test -l down_test

在这里插入图片描述

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

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

相关文章

Docker - 修改服务的端口

1. 测试 新建一个httpd服务 docker run -itd -p 1314:80 --name test -h test httpd 2. 先停止容器和 docke r服务 docker stop test #停止容器3. 修改配置 cd /var/lib/docker/containers ls 找到需要修改的 cd 1fc55f0d24014217cff68c9a417ca46cf50312caa5c9e6bb24085126…

为什么 IP 地址通常以 192.168 开头?(精简版)

网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。IP地址就类似于快递上填的收件地址和发件地址一样,路由器就充当快递员的角色,在这个纷繁复杂的网络世界里找到该由谁来接收这个数据包,所以说:IP地址就像快递里…

django搭建一个AI博客进行YouTube视频自动生成文字博客

文章目录 一、生成Django框架二、项目代码(前端)1、编写前端代码(正文界面)1.1、生产html框架1.2、添加live preview扩展1.3、更改title元素中文本1.4、添加CDN(CSS)样式链接1.5、nav标签1.6、在body标签中…

OpenCV(三)—— 车牌筛选

本篇文章要介绍如何对从候选车牌中选出最终进行字符识别的车牌。 无论是通过 Sobel 还是 HSV 计算出的候选车牌都可能不止一个,需要对它们进行评分,选出最终要进行识别的车牌。这个过程中会用到两个理论知识:支持向量机和 HOG 特征。 1、支…

华为机考入门python3--(19)牛客19- 简单错误记录

分类:字符串 知识点: 分割字符串 my_str.split(\\) 字符串只保留最后16位字符 my_str[-16:] 列表可以作为队列、栈 添加元素到第一个位置 my_list.insert(0, elem) 增加元素到最后一个位置 my_list.append(elem) 删除第一个 my_list.pop(0)…

C/C++开发环境配置

配置C/C开发环境 1.下载和配置MinGW-w64 编译器套件 下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 下载后解压并放至你容易管理的路径下(我是将其放在了D盘的一个software的文件中管理) 2.…

奈氏准则和香农定理

一、奈奎斯特和香农 哈里奈奎斯特(Harry Nyquist)(左) 克劳德艾尔伍德香农(Claude Elwood Shannon)(右) 我们应该在心里记住他们,记住所有为人类伟大事业做出贡献的人,因为他们我们的生活变得越来越精彩&…

【UnityRPG游戏制作】NPC交互逻辑、动玩法

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

多级留言/评论的功能实现——SpringBoot3后端篇

目录 功能描述数据库表设计后端接口设计实体类entity 完整实体类dto 封装请求数据dto 封装分页请求数据vo 请求返回数据 Controller控制层Service层接口实现类 Mapper层Mybatis 操作数据库 补充:返回的数据结构自动创建实体类 最近毕设做完了,开始来梳理…

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列(二)【创建核心类、封装数据库操作】

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列 四. 项⽬创建五. 创建核⼼类 ★创建 Exchange(名字、类型、持久化、自动删除、参数)创建 MSGQueue(名字、持久化、独占标识)创建 Binding(交换机名字、队列名字…

UDP编程流程(UDP客户端、服务器互发消息流程)

一、UDP编程流程 1.1、 UDP概述 UDP,即用户数据报协议,是一种面向无连接的传输层协议。相比于TCP协议,UDP具有以下特点: 速度较快:由于UDP不需要建立连接和进行复杂的握手过程,因此在传输数据时速度稍快…

Arcpy批量克里金插值报错

Arcpy批量克里金插值报错 文章目录 Arcpy批量克里金插值报错问题解决参考 问题 在进行实验的时候,Arcpy中批量进行克里金插值报错,主要就是在运行这个工具的时候,一直报错,改了很多参数也不行 ERROR 010079: 无法估算半变异函数…

MySQL商城数据库88张表结构(46—50)

46、消息队列表 CREATE TABLE dingchengyu消息队列表 (id int(11) NOT NULL AUTO_INCREMENT COMMENT 序号,userId int(11) DEFAULT NULL COMMENT 用户id,msgTtype tinyint(4) DEFAULT 0 COMMENT 消息类型,createTime datetime DEFAULT NULL COMMENT 创建时间,sendTime datetim…

LabVIEW自动剪板机控制系统

LabVIEW自动剪板机控制系统 随着工业自动化的快速发展,钣金加工行业面临着生产效率和加工精度的双重挑战。传统的手动或脚踏式剪板机已无法满足现代生产的高效率和高精度要求,因此,自动剪板机控制系统的研究与开发成为了行业发展的必然趋势。…

【深度学习】序列模型

深度学习(Deep Learning)是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层中进行学习,这些层对应于越来越有意义的表示。 1. 为什么选择序列模型? 循环神经网络(RNN…

[嵌入式系统-63]:RT-Thread-内核:内核在不同CPU架构上的移植和不同硬件板BSP上的移植

目录 内核移植 1. CPU 架构移植:由CPU厂家提供 1.1 实现全局中断开关:汇编语言实现 (1)关闭全局中断 (2)打开全局中断 1.2 实现线程栈初始化 1.3 实现上下文切换 (1)实现 rt…

零代码编程:用Kimichat从PDF文件中批量提取图片

一个PDF文件中,有很多图片,想批量提取出来,可以借助kimi智能助手。 在借助kimi智能助手中输入提示词: 你是一个Python编程专家,要完成一个网页爬取Python脚本的任务,具体步骤如下: 打开文件夹…

基于深度学习检测恶意流量识别框架(80+特征/99%识别率)

基于深度学习检测恶意流量识别框架 目录 基于深度学习检测恶意流量识别框架简要示例a.检测攻击类别b.模型训练结果输出参数c.前端检测页面d.前端训练界面e.前端审计界面(后续更新了)f.前端自学习界面(自学习模式转换)f1.自学习模式…

数据结构与算法之经典排序算法

一、简单排序 在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单按照订单的日期进行排序,再比如查询一些商品,按照商品的价格进行排序等等。所以&a…

021、Python+fastapi,第一个Python项目走向第21步:ubuntu 24.04 docker 安装mysql8、redis(二)

系列文章目录 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 安装redis 我会以三种方式安装, 第一、直接最简单安装,适用于测试环境玩玩 第二、conf配置安装 第三、集群环境安装 一…