七牛云中文件批量下载

业务需要

  • 之前很多的文件都存储在了七牛云,但是目前有项目需要在内网部署,所以所有的外链资源都要本地化。所以要从七牛云的仓库中再下载回来。

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

出现的一些错误:

  1. 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))
  1. 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

七牛云批量下载文件到本地相关推荐

  1. MinIO按前缀批量下载文件到本地

    /*** 按前缀批量下载文件到本地* @param bucketName 存储桶名称* @param prefix 文件前缀* @param saveDir 本地存储路径*/@SneakyThrows ...

  2. python 根据 url 批量下载文件到本地

    需求说明 将服务器上的文件(动物图片)批量下载到本地,并保留服务器上的目录结构. 一个很好的下载方法是:将服务器上的文件压缩为一个压缩包,然后直接下载一个压缩包到本地即可. 该方案缺点:压缩后的压缩包 ...

  3. python批量下载文件-python 从远程批量下载文件到本地

    需求: 1.从postgresql数据库中查出附件名称 2.从远程服务器下载对应的附件 用到的python模块paramiko.psycopg2. paramiko是用python写的一个模块,遵循S ...

  4. colab 从云端批量下载文件到本地

    1. 云端下载到本地 方式1:比如要下载train2014目录下所有的文件,则cd到该目录,具体如下,如果要下载多层文件夹下的文件需要对下面代码做些修改 . import os from google ...

  5. php七牛云批量上传,七牛云——批量将本地图片上传到七牛云

    前言 在本地大概有10w左右的头像图片,打算批量上传到七牛云,寻找后发现了一个神奇的官方工具,十分的好用 工具 资源批量上传和多文件上传 我这里上传本地用的是QsunSync QsunSync Git ...

  6. flashfxp下载文件,flashfxp如何下载文件到本地

    用flashfxp下载文件很方便,但我发现一款比flashfxp下载文件更为简单的软件:IIS7服务器管理工具. IIS7服务器管理工具中的ftp功能和vnc很像,都能支持批量操作,但是ftp比vnc ...

  7. 前端Vue项目中点击a标签实现下载文件到本地的功能

    点击a标签可实现下载图片或者是文件到本地的功能 1.根据后台提供的接口url下载文件到本地 <a :href="后台给接口提供的文件的url地址">点击下载文件< ...

  8. java批量下载demo_OBS JAVA SDK 实践8:批量下载文件(e.g 下载文件夹)

    1背景介绍& 效果展示 通过OBS JAVA SDK可以实现批量下载文件,如下载文件夹,效果如下. 注:有关标准存储.低频访问.归档存储三种存储类型的更多信息,参考链接:https://sup ...

  9. python 批量下载 代码_python 批量下载文件

    有时候看到好看的视频就想保存到本地,但是有的网站视频都是分段的,先去请求一个文件列表,再按照列表去拼接请求分段视频. 就类似这样:(这是开讲了某期的视频请求列表 http://hls.cntv.mya ...

最新文章

  1. 甲方爸爸,大概你要的是代码生成器吧?
  2. java中的int、Integer 和 new Integer()的区分和比较
  3. MySQL的用户和权限介绍
  4. USTC English Club Note20171020(3)
  5. Linux系统下GitLab服务的的搭建
  6. graphpad如何检测方差齐_如何选择方差分析中“多重比较”的方法?
  7. MongoDB常用语句
  8. 火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...
  9. Python入门--获取指定目录下的所有.py文件
  10. [转载] python中append函数的用法
  11. ehlib的DBGridEh控件中使用过滤功能的方法
  12. find命令结合exec和xargs使用的区别
  13. Android App 启动时显示正在加载图片(源码)
  14. macOS上专业的5款HTML文本代码编辑器
  15. 南京大学俞扬教授:强化学习真实环境不好用?那就模拟器来凑!
  16. 深度linux u盘安装教程,deepin 2014 u盘安装教程:u盘安装deepin2014步骤
  17. Promise的三种状态
  18. Pormetheus(普罗米修斯) 采用blackbox_exporter实现监控
  19. iframe标签全屏
  20. tbb学习笔记(一): tbb容器及Mutex

热门文章

  1. quartus 2操作
  2. 致未来女朋友的一封信
  3. 游戏模型设计用什么软件
  4. 浓缩睡眠法——如何睡少又睡好(读书笔记)
  5. 一分钟搞定属于自己的私人网盘(updog)
  6. 百度移动应用安卓_安卓车牌识别应用于移动警务通提高使用体验度
  7. CAD室内设计图,CAD图纸素材
  8. STM32 CubeMX HAL库 之红外接收(NEC协议)定时器捕获
  9. 又一年秋。。。。。。
  10. 分享27职业规划25自我介绍28开题报告PPT模板,总有一款适合你