欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

七牛云的python sdk 批量刪除資源的操作方法

 更新時(shí)間:2021年10月16日 09:49:52   作者:許光宗  
今天做項(xiàng)目的時(shí)候用到七牛云,關(guān)于對(duì)資源的操作是在后端做的,用的SDK,這篇文章主要介紹了七牛云的python sdk 是如何 批量刪除資源的,需要的朋友可以參考下

今天做項(xiàng)目的時(shí)候用到七牛云,關(guān)于對(duì)資源的操作是在后端做的,用的SDK,但是,在網(wǎng)上沒找到詳細(xì)的解析,官方文檔也沒有太詳細(xì)的解說,所以無(wú)奈只好看下源碼

這里做一下簡(jiǎn)單的記錄

from qiniu import build_batch_delete, Auth, BucketManager

#需要填寫你的 Access Key 和 Secret Key,這個(gè)在你的個(gè)人中心里有
access_key = 'Access_Key'
secret_key = 'Secret_Key'

#構(gòu)建鑒權(quán)對(duì)象
q = Auth(access_key, secret_key)

#初始化BucketManager

bucket = BucketManager(q)

# 這里就是你的七牛云里的空間名稱
bucket_name = "test"# 例子, 文件名 數(shù)組
keys = ['test.mp4','test1.mp4', ''test2.mp4'', ''test3.mp4'']

ops = build_batch_delete(bucket_name, keys)

ret, info = bucket.batch(ops)
print(info)

以上就是批量刪除的全部代碼,下面做一下詳細(xì)的解說

從build_batch_delete 函數(shù)進(jìn)去,進(jìn)入bucket.py文件下的 build_batch_delete 方法里

bucket.py

def build_batch_delete(bucket, keys):   # 這里的 bucket 就是上文的bucket_name 空間名稱,keys 及時(shí)文件列表
    return _one_key_batch('delete', bucket, keys)
def _one_key_batch(operation, bucket, keys):   # 這里給了個(gè)默認(rèn)參數(shù) delete 刪除操作,
    return [_build_op(operation, entry(bucket, key)) for key in keys]

下面我們看看   entry 方法里做了什么

utils.py

def entry(bucket, key):
    """計(jì)算七牛API中的數(shù)據(jù)格式:

    entry規(guī)格參考 https://developer.qiniu.com/kodo/api/1276/data-format

    Args:
        bucket: 待操作的空間名
        key:    待操作的文件名

    Returns:
        符合七牛API規(guī)格的數(shù)據(jù)格式
    """
    if key is None:
        return urlsafe_base64_encode('{0}'.format(bucket))
    else:
        return urlsafe_base64_encode('{0}:{1}'.format(bucket, key))
如果key 不存在 數(shù)據(jù)就是空間名,key存在就做了個(gè)字符串格式化
例如:第一個(gè)key 是  test.mp4   那么 數(shù)據(jù)就是 "test:test.mp4"
然后將  "test:test.mp4" 傳入  urlsafe_base64_encode   我們?cè)倏纯? urlsafe_base64_encode  做了什么

from base64 import urlsafe_b64encode
def urlsafe_base64_encode(data):
    """urlsafe的base64編碼:

    對(duì)提供的數(shù)據(jù)進(jìn)行urlsafe的base64編碼。規(guī)格參考:
    https://developer.qiniu.com/kodo/manual/1231/appendix#1

    Args:
        data: 待編碼的數(shù)據(jù),一般為字符串

    Returns:
        編碼后的字符串
    """
    ret = urlsafe_b64encode(b(data))
    return s(ret)

返回的數(shù)據(jù)是 bytes 類型 又傳到s方法里做了一遍解碼 為字符串類型

compat.py

 def b(data):
        if isinstance(data, str):
            return data.encode('utf-8')
        return data

最后data 被傳入 b方法 做了一下utf-8  編碼

def s(data):
    if isinstance(data, bytes):
        data = data.decode('utf-8')
    return data

最后 entry 函數(shù) 返回的 是'ZGRkZDpkZGRfMzMubXA0' 類型數(shù)據(jù) 結(jié)合上文 我們?cè)倏纯?_build_op 方法做了什么

bucket.py

def _build_op(*args):  這里 出入args 為("delete",'ZGRkZDpkZGRfMzMubXA0' )
    return '/'.join(args)   # join  操作以后  為   "delete/ZGRkZDpkZGRfMzMubXA0"

到這 build_batch_delete 方法就執(zhí)行完了 結(jié)合上面示例,該方法 返回的是一個(gè)列表 ["delete/ZGRkZDpkZGRfMzMubXA0","delete/ZGRkZDpkZGRfMzMubXA0","delete/ZGRkZDpkZGRfMzMubXA0","delete/ZGRkZDpkZGRfMzMubXA0"]

然后 再看 bucket.batch(ops) 里 做了 什么

    def batch(self, operations):
        """批量操作:

        在單次請(qǐng)求中進(jìn)行多個(gè)資源管理操作,具體規(guī)格參考:
        http://developer.qiniu.com/docs/v6/api/reference/rs/batch.html

        Args:
            operations: 資源管理操作數(shù)組,可通過

        Returns:
            一個(gè)dict變量,返回結(jié)果類似:
                [
                    { "code": <HttpCode int>, "data": <Data> },
                    { "code": <HttpCode int> },
                    { "code": <HttpCode int> },
                    { "code": <HttpCode int> },
                    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
                    ...
                ]
            一個(gè)ResponseInfo對(duì)象
        """
        url = '{0}/batch'.format(config.get_default('default_rs_host'))   
        return self.__post(url, dict(op=operations))

config.py

RS_HOST = 'http://rs.qiniu.com'  # 管理操作Host
RSF_HOST = 'http://rsf.qbox.me'  # 列舉操作Host
API_HOST = 'http://api.qiniu.com'  # 數(shù)據(jù)處理操作Host
UC_HOST = 'https://uc.qbox.me'  # 獲取空間信息Host

_BLOCK_SIZE = 1024 * 1024 * 4  # 斷點(diǎn)續(xù)傳分塊大小,該參數(shù)為接口規(guī)格,暫不支持修改

_config = {
    'default_zone': zone.Zone(),
    'default_rs_host': RS_HOST,
    'default_rsf_host': RSF_HOST,
    'default_api_host': API_HOST,
    'default_uc_host': UC_HOST,
    'connection_timeout': 30,  # 鏈接超時(shí)為時(shí)間為30s
    'connection_retries': 3,  # 鏈接重試次數(shù)為3次
    'connection_pool': 10,  # 鏈接池個(gè)數(shù)為10
    'default_upload_threshold': 2 * _BLOCK_SIZE  # put_file上傳方式的臨界默認(rèn)值
}

從 配置文件里 取出跟路徑 做拼接

得 URL =http://rs.qiniu.com/batch

dict(op=operations) 得 {'op': ['delete/ZGRkZDpkZGRfMzMubXA0', 'delete/ZGRkZDpkZGRfMzMubXA0', 'delete/ZGRkZDpkZGRfMzMubXA0', 'delete/ZGRkZDpkZGRfMzMubXA0']}

再然后就是 調(diào)post請(qǐng)求 將刪除請(qǐng)求 和 數(shù)據(jù)發(fā)過去

最后返回值 得提一下

http.py

def __return_wrapper(resp):
    if resp.status_code != 200 or resp.headers.get('X-Reqid') is None:
        return None, ResponseInfo(resp)
    resp.encoding = 'utf-8'
    ret = resp.json() if resp.text != '' else {}
    if ret is None:  # json null
        ret = {}
    return ret, ResponseInfo(resp)

在這個(gè)文件里 還單獨(dú)處理了一下 響應(yīng)體 所以最后返回的是一個(gè)元祖,可以用兩個(gè)參數(shù)接受

以上就是對(duì) 七牛云 這個(gè)刪除 操作 做的一個(gè)源碼分析,,有不對(duì)的地方請(qǐng)大佬指出。

到此這篇關(guān)于python sdk 批量刪除資源的操作方法的文章就介紹到這了,更多相關(guān)python sdk 是如何 批量刪除資源的內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • opencv python簡(jiǎn)易文檔之圖片基本操作指南

    opencv python簡(jiǎn)易文檔之圖片基本操作指南

    OpenCv除了可以獲取圖像之外,還可以對(duì)圖像進(jìn)行一下處理操作,下面這篇文章主要給大家介紹了關(guān)于opencv python簡(jiǎn)易文檔之圖片基本操作的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • python的構(gòu)建工具setup.py的方法使用示例

    python的構(gòu)建工具setup.py的方法使用示例

    本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-10-10
  • Python基于字典實(shí)現(xiàn)switch case函數(shù)調(diào)用

    Python基于字典實(shí)現(xiàn)switch case函數(shù)調(diào)用

    這篇文章主要介紹了Python基于字典實(shí)現(xiàn)switch case函數(shù)調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python實(shí)現(xiàn)Youku視頻批量下載功能

    Python實(shí)現(xiàn)Youku視頻批量下載功能

    前段時(shí)間由于收集視頻數(shù)據(jù)的需要,自己搗鼓了一個(gè)YouKu視頻批量下載的程序。下面小編把實(shí)現(xiàn)過程分享到腳本之家平臺(tái),供大家參考
    2017-03-03
  • Python中正則表達(dá)式的用法總結(jié)

    Python中正則表達(dá)式的用法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python中正則表達(dá)式的用法總結(jié),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • tracemalloc分析內(nèi)存使用情況與泄露方式

    tracemalloc分析內(nèi)存使用情況與泄露方式

    這篇文章主要介紹了tracemalloc分析內(nèi)存使用情況與泄露方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 如何取消pyecharts繪制地圖時(shí)默認(rèn)顯示小圓點(diǎn)標(biāo)識(shí)

    如何取消pyecharts繪制地圖時(shí)默認(rèn)顯示小圓點(diǎn)標(biāo)識(shí)

    這篇文章主要介紹了如何取消pyecharts繪制地圖時(shí)默認(rèn)顯示小圓點(diǎn)標(biāo)識(shí),文章內(nèi)容介紹詳細(xì)具有一定的參考價(jià)值?需要的小伙伴可以參考一下
    2022-04-04
  • 利用python清除移動(dòng)硬盤中的臨時(shí)文件

    利用python清除移動(dòng)硬盤中的臨時(shí)文件

    本篇文章的目的是在移動(dòng)硬盤插入到電腦的同時(shí),利用Python自動(dòng)化和Windows服務(wù)刪除掉這些臨時(shí)文件。感興趣的朋友可以了解下
    2020-10-10
  • python利用裝飾器進(jìn)行運(yùn)算的實(shí)例分析

    python利用裝飾器進(jìn)行運(yùn)算的實(shí)例分析

    本文主要是通過使用Python的裝飾器來(lái)做一個(gè)運(yùn)算的實(shí)例,來(lái)給大家詳細(xì)介紹下Python的裝飾器,非常的實(shí)用,有需要的小伙伴可以參考下。
    2015-08-08
  • python一秒搭建FTP服務(wù)器

    python一秒搭建FTP服務(wù)器

    今天給大家分享一篇教程關(guān)于python一秒搭建FTP服務(wù)器的教程,在搭建過程中需要用到pyftpdlib模塊,對(duì)python FTP服務(wù)器搭建過程感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評(píng)論