使用python管理百度云存储

百度云存储(BCS)提供了很强大的存储空间,我最近考虑是不是拿它做个图床,其官方提供的python SDK相当详细,操作也比较简单,下面简单的说下它的用法,抛砖引玉,大家有什么更好的用途也请赐教

官方使用手册:http://bcs.duapp.com/pcs-doc/bcsh-usage.html

官方SDK文档:http://bcs.duapp.com/pcs-doc/bcs-epydoc/index.html

1.下载 http://peak.telecommunity.com/dist/ez_setup.py 保存, 这个脚本将帮组我们安装 setuptools 运行该脚本,将会安装setuptools

2.安装pycurl, pycurl 可选安装, 如果不安装pycurl, 将默认使用httplib 作为上传下载, 会把文件内容读到内存中, 所以性能较差. 如果文件较大,必须安装pycurl

3.下载pybcs http://bcs.duapp.com/cplat-01/bcs/Baidu-BCS-SDK-Python-1.3.2.zip

4.解压,cmd切换到解压后的目录中,执行 python setup.py install

注意,默认会从pypi的国外站点访问,国内经常访问不了,需要将pypi换到国内的镜像

如果你的%HOMEPATH%\ 下面有pip/pip.ini 文件那么直接编辑,没有的话自已手工添加一个,在里面写入或者修改

[global]
timeout = 60
index-url = http://pipy.douban.com/simple

 

这个会将到pypi的请求切换到国内的豆瓣镜像,速度相当好,改后再执行 python setup.py install

5.在百度开发者中心中新建一个应用,记下它的api key(AK)与Secret Key(SK)然后点击后创建一个Bucket,官方给的解释是这个bucket相当于一个namespace,这样理解挺好

6.打开baidu-bcs的SDK,里面有一个example.py,这里面的coding是utf8的,windows建议改成gbk的,要不后面有很多乱码的

7.修改里面的AK与SK为你自已的,BUCKET为你刚才创建的

8.其实这个example.py里写的都挺好的,但是我想要仔细地读下它的代码


   
bcs = pybcs.BCS( ' http://bcs.duapp.com/ ' , AK, SK, pybcs.HttplibHTTPC)

查看官方sdk文档,class BCS的 __init__方法要传(self, host, ak, sk, httpclient_class=None)几个参数

方法 list_buckets(self)

列举所有的buckets 将其实保存在一个字典里,下面的for循环将遍历你所创建的所有bucket

9.试着上传一个文件,思路是先确定要上传到哪个bucket,然后再用上传的方法来上传

b = bcs.bucket(BUCKET) ##这里先确定你要上传到哪个bucket

b.create() ##这里将进行创建一个新的bucket,如果没有的话,如果存在的话则会报错

o = b.object('/test2/360doskillupload.php') ##声明一个object,也就是你想要上传文件到的目的地址与文件名

o.put_file('test2/360doskill.php') ##将本地的文件上传上去,
o.delete() ##将这个object也就是云端的文件删除

这个是单个文件的上传与删除,可以拓展一下上传一下本地的目录到BCS上,在BCS上也是保持同样的目录

代码如下


   
# !/usr/bin/env python # coding:gbk import os import logging import pybcs # 设置日志级别 pybcs.init_logging(logging.INFO) # 请修改这里 AK = '' # 请改为你的AK SK = '' # 请改为你的SK BUCKET = '' # 改为你的bucket bcs = pybcs.BCS( ' http://bcs.duapp.com/ ' , AK, SK, pybcs.HttplibHTTPC) # 这里可以显式选择使用的HttpClient, 可以是: # HttplibHTTPC # PyCurlHTTPC def listFile(path, isDeep = True): _list = [] if isDeep: try : for root, dirs, files in os.walk(path): for fl in files: _list.append( ' %s\%s ' % (root, fl)) except : pass else : for fn in glob.glob( path + os.sep + ' * ' ): if not os.path.isdir(fn): _list.append( ' %s ' % path + os.sep + fn[fn.rfind( ' \\ ' ) + 1 :]) return _list b = bcs.bucket(BUCKET) dir = os.getcwd() + ' \\01 ' # #取一个和当前脚本同目录下的目录名 filelist = listFile(dir) for i in filelist: ic = i.replace(os.getcwd(), '' ) # #去掉os.getcwd()前缀 upi = ic.replace( ' \\ ' , ' / ' ) # #将\替换为/ o = b.object(upi) o.put_file(i)

SDK中同样还提供一个bcsh.py的脚本,里面已经集成了很多应用,可以通过调用脚本加参数的形式调用,同样非常方便

转载于:https://my.oschina.net/yangyanxing/blog/192317

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值