七牛云批量下载文件到本地
七牛云中文件批量下载
业务需要
- 之前很多的文件都存储在了七牛云,但是目前有项目需要在内网部署,所以所有的外链资源都要本地化。所以要从七牛云的仓库中再下载回来。
1.终端脚本下载
官方文档
参考官方文档中的配置进行配置。当可以配置了PATH之后,可以在终端使用qshell的时候,就成功了一半。
我的设备是mac,在运行的时候发现如下问题
- MacOs 无法打开xxx ,因为无法验证开发者的问题。导致本地terminal无法使用qshell
# 禁用验证
sudo spctl --master-disable
qshell命令行需要参考如下文档:qshell命令行文档
进行如下操作,注册账号信息
#需要鉴权的命令都需要依赖七牛账号下的 AccessKey 和 SecretKey。所以这类命令运行之前,需要使用 account 命令来设置下 AccessKey ,SecretKey ,最后的账号没具体看过,我是写的账户名,应该可以随便起的
qshell account m1lGO9G95*******************hSIQX_O694U 3KeBSg65S*******************PtkwZ4CFRXcyD progerchai@gmail.com# 下载命令-- 单文件下载
# qshell get <Bucket> <Key> [-o <OutFile>]
# Bucket 存储空间(空间名)
# Key 存储空间中的文件名字(文件名)
# OutFile 保存在本地的名字,不指定,默认使用存储空间中的名字(忽略默认到当前terminal路径)
qshell get mo-imgs ClassRoom/detail.png
qshell qdownload 参考文档
配置conf
{"dest_dir" : "<LocalBackupDir>","bucket" : "<Bucket>","prefix" : "image/","suffixes" : ".png,.jpg","cdn_domain" : "down.example.com","referer" : "http://www.example.com","log_file" : "download.log","log_level" : "info","log_rotate" : 1,"log_stdout" : false
}
# 多文件批量下载
qshell qdownload -c 10 qdisk_down.conf # 10是线程数,支持的同时下载文件数量
效果图
2.python批量下载
根据官方文档中的配置
参考官方的代码,参考地址
根据文档可以写一个py文件,在终端运行。
终端cd到py文件路径,执行
python downloadQiniu.py
出现的一些错误:
- no module named ‘qiniu’
# 解决
pip install qiniu
$ python downloadQiniu.py # 执行py# 结果
1/发票.pdf
https://mo-imgs.momodel.cn/1/发票.pdf
Traceback (most recent call last):File "downloadQiniu.py", line 32, in <module>private_url = q.private_download_url(base_url, expires=100)File "/Users/aiyouwei/Library/Python/2.7/lib/python/site-packages/qiniu/auth.py", line 121, in private_download_urlurl = '{0}e={1}'.format(url, str(deadline))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 29-30: ordinal not in range(128)# 解决
# qiniu py文件出错
# 1.到对应到目录 File "/Users/aiyouwei/Library/Python/2.7/lib/python/site-packages/qiniu/auth.py", line 121
# 2.打开这个文件,修改代码中的 format(url, str(deadline)) 为 format(url.encode('utf-8'), str(deadline))
- No such file or directory
# 执行
$ python downloadQiniu.py# 结果
1/发票.pdf
https://mo-imgs.momodel.cn/1/发票.pdf
https://mo-imgs.momodel.cn/1/发票.pdf?e=1599840018&token=m1lGO9G95*******************hSIQX_O694U:0w1*********tdZD0JIps=
Traceback (most recent call last):File "downloadQiniu.py", line 40, in <module>file = open(path + i['key'], "wb")
IOError: [Errno 2] No such file or directory: u'/Users/aiyouwei/Desktop/qiniu/1/\u53d1\u7968.pdf'
问题的原因是官方给的py代码file path 的地方处理有点问题,可以直接用下面的最终代码运行。
最终的代码:
# -*- coding: utf-8 -*-
from qiniu import Auth
from qiniu import BucketManager
import requests
import osaccess_key = 'm1lGO9G95*******************hSIQX_O694U'
secret_key = '3KeBSg65S*******************PtkwZ4CFRXcyD'q = Auth(access_key, secret_key)
bucket = BucketManager(q)bucket_name = 'mo-imgs'
# 前缀 一般无需理会,可自定义前缀
prefix = None
# 列举条目,你需要的数据,有大小限制,1-1000,默认1000
limit = 1000
# 列举出除'/'的所有文件以及以'/'为分隔的所有前缀
delimiter = None
# 标记
marker = None
# 下载到你本地的地址,记得头尾加上 / 代表文件夹
path = '/Users/aiyouwei/Desktop/qiniu/mo-imgs/'ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
for i in ret['items']:print(i['key'])base_url = 'https://mo-imgs.momodel.cn/'+i['key']print(base_url)#如果空间有时间戳防盗链或是私有空间,可以调用该方法生成私有链接private_url = q.private_download_url(base_url, expires=100)print(private_url)r = requests.get(private_url)passif r.content:file_path = path + i['key']file_dir = os.path.dirname(file_path)if not os.path.exists(file_dir):os.makedirs(file_dir)file = open(file_path, "wb")file.write(r.content)file.flush()file.close()
最终结果:成功下载下来所有的文件
对应的
access_key = ‘’
secret_key = ‘’
做的一定的处理,请填自己的对应七牛云账号下的key
七牛云批量下载文件到本地相关推荐
- MinIO按前缀批量下载文件到本地
/*** 按前缀批量下载文件到本地* @param bucketName 存储桶名称* @param prefix 文件前缀* @param saveDir 本地存储路径*/@SneakyThrows ...
- python 根据 url 批量下载文件到本地
需求说明 将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构. 一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可. 该方案缺点:压缩后的压缩包 ...
- python批量下载文件-python 从远程批量下载文件到本地
需求: 1.从postgresql数据库中查出附件名称 2.从远程服务器下载对应的附件 用到的python模块paramiko.psycopg2. paramiko是用python写的一个模块,遵循S ...
- colab 从云端批量下载文件到本地
1. 云端下载到本地 方式1:比如要下载train2014目录下所有的文件,则cd到该目录,具体如下,如果要下载多层文件夹下的文件需要对下面代码做些修改 . import os from google ...
- php七牛云批量上传,七牛云——批量将本地图片上传到七牛云
前言 在本地大概有10w左右的头像图片,打算批量上传到七牛云,寻找后发现了一个神奇的官方工具,十分的好用 工具 资源批量上传和多文件上传 我这里上传本地用的是QsunSync QsunSync Git ...
- flashfxp下载文件,flashfxp如何下载文件到本地
用flashfxp下载文件很方便,但我发现一款比flashfxp下载文件更为简单的软件:IIS7服务器管理工具. IIS7服务器管理工具中的ftp功能和vnc很像,都能支持批量操作,但是ftp比vnc ...
- 前端Vue项目中点击a标签实现下载文件到本地的功能
点击a标签可实现下载图片或者是文件到本地的功能 1.根据后台提供的接口url下载文件到本地 <a :href="后台给接口提供的文件的url地址">点击下载文件< ...
- java批量下载demo_OBS JAVA SDK 实践8:批量下载文件(e.g 下载文件夹)
1背景介绍& 效果展示 通过OBS JAVA SDK可以实现批量下载文件,如下载文件夹,效果如下. 注:有关标准存储.低频访问.归档存储三种存储类型的更多信息,参考链接:https://sup ...
- python 批量下载 代码_python 批量下载文件
有时候看到好看的视频就想保存到本地,但是有的网站视频都是分段的,先去请求一个文件列表,再按照列表去拼接请求分段视频. 就类似这样:(这是开讲了某期的视频请求列表 http://hls.cntv.mya ...
最新文章
- 甲方爸爸,大概你要的是代码生成器吧?
- java中的int、Integer 和 new Integer()的区分和比较
- MySQL的用户和权限介绍
- USTC English Club Note20171020(3)
- Linux系统下GitLab服务的的搭建
- graphpad如何检测方差齐_如何选择方差分析中“多重比较”的方法?
- MongoDB常用语句
- 火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...
- Python入门--获取指定目录下的所有.py文件
- [转载] python中append函数的用法
- ehlib的DBGridEh控件中使用过滤功能的方法
- find命令结合exec和xargs使用的区别
- Android App 启动时显示正在加载图片(源码)
- macOS上专业的5款HTML文本代码编辑器
- 南京大学俞扬教授:强化学习真实环境不好用?那就模拟器来凑!
- 深度linux u盘安装教程,deepin 2014 u盘安装教程:u盘安装deepin2014步骤
- Promise的三种状态
- Pormetheus(普罗米修斯) 采用blackbox_exporter实现监控
- iframe标签全屏
- tbb学习笔记(一): tbb容器及Mutex