美文网首页python交流学习
Python知道如何管理百度云储存?可能? 不可能?

Python知道如何管理百度云储存?可能? 不可能?

作者: 78c40b03ee4e | 来源:发表于2019-02-20 20:25 被阅读8次

    百度云存储(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](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的脚本,里面已经集成了很多应用,可以通过调用脚本加参数的形式调用,同样非常方便

    小编推荐一个学python的学习qun 740322234
    无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

    相关文章

      网友评论

        本文标题:Python知道如何管理百度云储存?可能? 不可能?

        本文链接:https://www.haomeiwen.com/subject/lndkyqtx.html