七牛云数据存储Demo
利用七牛云的Python SDK实现文件上传、下载等操作。
import os
import requests
import qiniu
from qiniu import BucketManager
from qiniu import Auth
from qiniu import utils
# 你自己的accessKey
accessKey = 'DjZp39jT_GN7yr0i_vf5Zs3vBnzYjzkxd7kt6tuK'
# 你自己的secretKey
secretKey = 'HouhuF7Essfu-VveQ3GYXTcEddgP1qrwtblWuMNa'
# 你自己的bucket_domain
bucket_domain = '7xjsrw.com3.w1.blg.clouddn.com'
class Kpan():
def __init__(self, base_dir, ak=accessKey, sk=secretKey):
"""初始化Kpan类
base_dir:工作路径
ak:accessKey
sk: secretKey
"""
self.auth = Auth(ak, sk)
self.bucket_manager = BucketManager(self.auth)
self.kpan_bucket = 'kpan'
self.base_dir = os.path.abspath(base_dir)
def upload_file(self, key):
filePath = os.path.join(self.base_dir, key)
# 计算当前文件的hash值,如果服务器上存在相同的副本取消上传
file_hash = utils.etag(filePath)
if file_hash == self.is_file_exist(key):
print('服务器已存在相同的副本,上传取消...')
return
upToken = self.auth.upload_token(self.kpan_bucket, key)
ret, info = qiniu.put_file(upToken, key, filePath)
print('%s上传成功...' % key)
def download_file(self, key, toPath=None):
'''下载单个文件
key:要下载的文件
toPath:存储路径,默认为base_dir
'''
if not toPath:
toPath = self.base_dir
base_url = 'http://%s/%s' % (bucket_domain, key)
# 设置token过期时间
private_url = self.auth.private_download_url(base_url, expires=3600)
r = requests.get(private_url)
path = os.path.join(toPath, key)
dir, _ = os.path.split(path)
if not os.path.exists(dir):
os.makedirs(dir)
with open(path, 'wb') as f:
f.write(r.content)
print('%s 文件保存成功' % key)
def get_all_files(self):
items = self.list_all_file()
for item in items:
self.download_file(item['key'])
def delete_file(self, key):
if not self.is_file_exist(key):
print('%s 文件不存在...' % key)
return
ret, info = self.bucket_manager.delete(self.kpan_bucket, key)
if not ret:
print('%s 文件删除成功...' % key)
else:
print(ret)
def list_all_file(self):
ret, eof, info = self.bucket_manager.list(self.kpan_bucket)
items = ret['items']
# 返回所有文件列表
return items
def rename(self, key, tokey):
if not self.is_file_exist(key) or self.is_file_exist(tokey):
print('重命名失败,“%s”可能已存在' % tokey)
return
ret, info = self.bucket_manager.rename(self.kpan_bucket, key, tokey)
if not ret:
print('将“%s”重命名为“%s”成功...' % (key, tokey))
else:
print('“%s”重命名失败...' % key)
def is_file_exist(self, key):
# 检查服务器上文件是否存在,如存在返回hash值
ret, info = self.bucket_manager.stat(self.kpan_bucket, key)
if not ret:
return False
else:
return ret['hash']
def upload_all_files(self):
for fpathe, dirs, fs in os.walk(self.base_dir):
for f in fs:
_path = os.path.join(fpathe, f)
key = os.path.relpath(_path, self.base_dir)
if os.name == 'nt':
key = key.replace('\\', '/')
pan.upload_file(key)
print('所有文件上次成功...')
if __name__ == '__main__':
# 测试文件上传
pan = Kpan('D:/Kpan')
# pan.get_all_files()
pan.upload_all_files()
七牛云数据存储Demo的更多相关文章
- DT添加七牛云对象存储插件功能
七牛云对象存储 1.注意客户购买的空间的存储区域,区域不同对应的上传域名不同 destoon 七牛云上传文件 用下面源码替换include/ftp.class.php 文件代码 &l ...
- 使用FileZilla Pro S3协议访问七牛云对象存储
偶然发现FileZilla还有Pro版本,主要是比免费版多了一些协议支持,也偶然发现七牛云支持了S3协议接口,这样刚好弥补了其没有FTP的不足,于是找官方文档,折腾一下,使用FileZilla Pro ...
- Gin + 七牛云对象存储
配置七牛云存储 创建存储空间 拿到密钥 安装七牛云对象存储SDK 推荐go.mod安装 // 将下面地址复制到go.mod,然后执行go mod download github.com/qiniu/a ...
- django之集成七牛云对象存储
Python3 + Django2.0 集成 "七牛云" 对象存储 (SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error- ...
- 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载
这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...
- 七牛云对象存储kodo使用体验
在这里,我使用了七牛云的对象存储Kodo,和阿里云的OSS,还有腾讯云的COS是同样的产品 oss相关术语 包依赖关系解决 unrecognized import path "golang. ...
- 使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_130 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用v ...
- scrapy抓取拉勾网职位信息(七)——数据存储(MongoDB,Mysql,本地CSV)
上一篇完成了随机UA和随机代理的设置,让爬虫能更稳定的运行,本篇将爬取好的数据进行存储,包括本地文件,关系型数据库(以Mysql为例),非关系型数据库(以MongoDB为例). 实际上我们在编写爬虫r ...
- 联系人数据存储Demo源代码
源码下载地址:07-联系人数据存储.zip35.8 KB // MJPerson.h // // MJPerson.h // 07-联系人数据存储 // // Created by apple ...
随机推荐
- JavaScript 值类型和引用类型的初次研究
今天遇到一个坑,具体的不多说,直接上代码 var a = [ [],[],[1,2,3] ] var b = ['颜色','大小','尺寸'] var arr = [] for(let i = 0; ...
- A----奇怪的玩意
题目: 我们的化学生物学家发明了一种新的叫stripies非常神奇的生命.该stripies是透明的无定形变形虫似的生物,生活在果冻状的营养培养基平板菌落.大部分的时间stripies在移动.当他 ...
- __main() 和 main() 【转】
因为我们通常在BOOTLOADER中都已做好了比较细致的初始化工作,包括代码的搬运,所以我们最好别再调用库函数__main(),因为__main()作为ADS集成好的库函数,会对系统进行初始化设置,可 ...
- Spring源码情操陶冶-ContextLoader
前言-阅读源码有利于陶冶情操,本文承接前文Spring源码情操陶冶-ContextLoaderListener 静态代码块内容 ContextLoader在被主动调用的时候,会执行其的一个静态块,代码 ...
- business meeting
Metting are all about discussions . discussion expression 开始会议 Let's get started We need to discuss. ...
- hadoop环境中误删除tmp文件夹的恢复
情景描述: 种种原因,不小心把系统根目录中的tmp文件删除了!发现jps之后看不到 master主机上面的namenode,resourcemanager,secondarynamenode三个进程了 ...
- 【EntityFramework 6.1.3】个人理解与问题记录
前言 又是一个炎热夏日的晚上,开着空调听着音乐又开始了我们今天的博文.此文并不是ROM工具哪家强之类的引战贴,只是本文自己的一点看法和见解,望前辈看官有望斧正 声明 本文欢迎转载,原文地址:http: ...
- Hadoop(一)Centos7虚拟机网络配置
Centos7虚拟机网络配置(桥接模式) 一 VirtualBox提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). 1 桥接模式(br ...
- X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp
0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...
- /etc/shadow,/etc/passwd,/etc/shadow,/etc/passwd文件的内容解释
1.1 /etc/passwd文件内容格式 该目录存储的是操作系统用户信息,该文件为所有用户可见 用户名: 密码 : uid : gid :用户描述:主目录:登陆shell 举个 ...