sevencow

Yet another qiniu cloud storage Python SDK


License
BSD-3-Clause
Install
pip install sevencow==0.2.0

Documentation

Seven Cow 七牛

另一个七牛云存储Python SDK

这是一个比官方更易用的SDK。 官方SDK请见 官方SDK

Install

pip install sevencow

Usage

初始化

在你需要的地方

from sevencow import Cow
cow = Cow(<ACCESS_KEY>, <SECRET_KEY>)

然后就可以通过 cow.stat(<BUCKET>, <FILENAME>) 这样来进行操作. 但为了简化操作,并且考虑到大多数都是在一个bucket中进行文件操作, 所以建议再做一步:

b = cow.get_bucket(<BUCKET>)

后面都用这个b对象来操作。 它代表了<BUCKET>

列出所有的bucket

cow.list_buckets()

列出一个bucket中的所有文件

b.list_files()

这个方法还有 marker, limit, prefix这三个可选参数,详情参考官方文档

上传

# Bucket.put(filename, data=None, keep_name=False, override=True)
# filename:  文件名。 或者是从磁盘文件上传,就是文件路径
# data:      如果从buffer中上传数据,就需要此参数。表示文件内容。
# keep_name: 上传后的文件是否保持和filename一样。默认为False,用文件内容的MD5值
# override:  上传同名文件,是否强制覆盖
b.put('a')                    # 上传本地文件a,并且用a内容的MD5值作为上传后的名字
b.put('a'keep_name=True)   # 上传本地文件a,并且用a作为上传后的名字
b.put('a', data=data)         # 把`data`数据上传,用`data`的MD5值作为上传后的名字
                                这种的使用场景是你直接有了一个file-like的对象在内存中,
                                比如通过浏览器上传的文件,
                                此时你就不用把文件先写入磁盘,而是直接把文件内容读出,直接上传

删除,查看文件信息

b.stat('a')                 # 查看单个文件信息
b.delete('a')               # 删除单个文件

拷贝,移动(改名)

这两个操作需要提供源文件名和目标文件名

b.copy('a', 'b')                            # 将'a' 拷贝至'b'
b.move('a', 'b')                            # 将'a' 改名为'b'

有没有觉得比官方SDK容易使用多呢?


异常

以上操作任何错误都会引发异常, 只要请求api返回的不是200

所以安全的做法是这样:

from sevencow import CowException

try:
    b.put('a')
except CowException as e:
    print e.url         # 出错的url
    print e.status_code # 返回码
    print e.content     # api 错误的原因

测试

  1. 首先从github clone项目到本地
  2. 测试需要三个环境变量

    export QINIU_ACCESS_KEY=<...>
    export QINIU_SECRET_KEY=<...>
    export QINIU_BUCKET=<...>

    QINIU_BUCKET 要先在web中建立

  3. 在项目目录中直接运行 nosetests