• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language
    Python
  • License
    BSD 4-Clause "Ori...
  • Created over 11 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Yet another qiniu cloud storage Python SDK. More Pythonic, More simple to use

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

More Repositories

1

social-oauth

OAuth2 for Chinese social sites
Python
324
star
2

make-proxy

HTTP/HTTPS/Socks4/Socks5 proxy written in Erlang
Erlang
270
star
3

django-siteuser

Register, Login, OAuth2, Upload avatar...
Python
256
star
4

renren-relationship

人人好友关系
Python
186
star
5

django-social-login

[DISCARDED]A Django APP for Social accounts login via OAuth2 Service
Python
104
star
6

codebattle-ai

AI Example for Codebattle
Erlang
45
star
7

django-upload-avatar

A django app for upload avatars
Python
40
star
8

paper

Feel free about writing blog. This is a simple blog system, Just bloging, Implemented on bottle
Python
35
star
9

playground

Erlang
32
star
10

duckadmin

A Django reusable app for show and operate custom forms in admin.
Python
30
star
11

abchat

Abstract Simple Chat Server Based on Gevent
Python
24
star
12

timerush

Python Timer Framework
Python
21
star
13

djangowebsocket

Python
20
star
14

i3-dzen2-bridge

Bridged the i3status and dzen2 to make dzen2 display icons
Python
20
star
15

vim-linemovement

simplify the line movement in vim
Vim Script
20
star
16

unity3d-scripts

A Collections of useful Scripts/Examples for Unity3d
C#
18
star
17

codebattle-server

codebattle server
Erlang
17
star
18

daemonize

Python Daemonize
Python
15
star
19

redis-lua-scripts

Lua script using with Redis
Python
14
star
20

vim-alignment

Align What You Want!
Vim Script
13
star
21

eipp

A C++11 Header Only Library for using erlang ei library.
C++
13
star
22

python-gears

A BBS Based On Django.
JavaScript
11
star
23

myblogposts

Posts of my blog
10
star
24

learn-you-some-erlang-zh

learn you some erlang 的简体中文翻译
9
star
25

codebattle-client

unity3d client of codebattle
C#
7
star
26

TRsound

For prononnce words with a terminal translation
C
4
star
27

gstatus

display git log in browser
Python
3
star
28

codebattle-proto

proto files for codebattle
3
star
29

django-admin-lastlocation

Return the last location after editing some item
Python
3
star
30

dianjing

Python
2
star
31

myfirefox

firefox plugins
2
star
32

redis-benchmark

Erlang
2
star
33

notebook

Erlang
2
star
34

arrow

Erlang Datetime Utils
Erlang
2
star
35

termgif

record your terminal to animated gif
C
2
star
36

mytools

自己的一些脚本工具
Python
1
star
37

sudoku

sudoku solved in my own way
C++
1
star
38

aoi

C++
1
star
39

smoke

A set collections of WSGI Middleware
Python
1
star
40

sanguo-server

Python
1
star