python实现批量下载及批量删除七牛空间文件

本文档展示了如何使用Python SDK与七牛云服务交互,实现下载指定bucket内的所有文件并保存到本地,以及删除所有文件的功能。通过设置access_key、secret_key和bucket_name,可以操作七牛云存储空间中的文件。代码中包含了文件列举、下载及删除的详细步骤。
摘要由CSDN通过智能技术生成

安装依赖

pip install qiniu
pip install requests==2.22.0

下载指定bucket所有文件

# -*- coding: utf-8 -*-
from qiniu import Auth
from qiniu import BucketManager
import requests
import os

access_key = 'r8E5bJ38C1236YULTogggg_-q5PZ1234xnCA6666'
secret_key = 'tMkR71234kc5555hfV3del3tPOHtcMrnniKg1234'

q = Auth(access_key, secret_key)
bucket = BucketManager(q)
# 空间名字
bucket_name = 'wxapp'
# 前缀
prefix = None
# 列举条目
limit = 20000
# 列举出除'/'的所有文件以及以'/'为分隔的所有前缀
delimiter = None
# 标记
marker = None


def download_all(save_path):
    """
    args:
        save_path:要保存的本地路径
    return:
        none
    """
    if save_path[-1] == os.sep:
        save_path = save_path[0:-1]

    # 域名
    domain_name = 'http://img.demo1234.com/'
    ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
    for i in ret['items']:
        print(i['key'])
        base_url = domain_name + i['key']
        print(base_url)

        # 如果空间有时间戳防盗链或是私有空间,可以调用该方法生成私有链接
        private_url = q.private_download_url(base_url, expires=100)
        # print(private_url)

        r = requests.get(private_url)

        if r.content:
            filename = i['key'].split('/')[-1]
            dirname = os.path.dirname(i['key'])
            print('dir==', dirname)
            local_dir = save_path + os.sep + dirname.replace('/', os.sep) + os.sep
            print('local_dir==', local_dir)
            if not os.path.exists(local_dir):
                os.makedirs(local_dir)
            file = open(local_dir + filename, "wb")
            file.write(r.content)
            file.flush()
            file.close()

删除指定bucket所有文件

def delete_all():
    del_count = 0
    print('DELETE ALL files for <{}>'.format(bucket_name))
    ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
    for i in ret['items']:
        del_count = del_count + 1
        print('{}:{}'.format(del_count, i['key']))
        ret, info = bucket.delete(bucket_name, i['key'])

说明:
填写自己的access_key和secret_key ,bucket_name 对应七牛的bucket
例如,要将bucket名为wxapp的所有图片下载到本地F盘下的qiniu_bak :

if __name__ == '__main__':
    download_all('F:\\qiniu_bak')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值