Bunm Jyo
Bunm Jyo's blog

Follow

Bunm Jyo's blog

Follow
七牛云的文件夹递归上传操作by Python3

七牛云的文件夹递归上传操作by Python3

Bunm Jyo's photo
Bunm Jyo
·Mar 21, 2023·

1 min read

create by grpchub-BunmJyo(twitter: bunmjyo) on 2023-03-22

注意环境配置:

python3 和 pip3 安装好qiniu依赖

pip3 install qiniu

# -*- coding: utf-8 -*-
'''
上传文件夹到七牛
'''
from qiniu import Auth, put_file
import os
import traceback
#export QNACCKEY=${QNAKIFI}
#export QNSECKEY=${QNSKIFI}
#export QNBUCKET=${QNBKIFI}
AK = os.environ['QNACCKEY'] # 从系统环境变量中读取qiniu的AK配置
SK = os.environ['QNSECKEY'] # 从系统环境变量中读取qiniu的SK配置
# qiniu bucket name
bucket_name = os.environ['QNBUCKET']
rlspath='lolo' 
# local absoule path 要上传的文件夹绝对路径
dir = '/mnt/c/Users/code0/Documents/Axure/HTML/Promo_reco'


rplpath= (dir[1:len(dir)])

q = Auth(AK, SK)
token = q.upload_token(bucket_name)

def updir(dirpath):
    if os.path.isdir(dirpath):#文件夹
        sublist = os.listdir(dirpath)
        for sub in sublist:
            updir(dirpath+'/'+sub)
    else:#文件
        fpath, fname = os.path.split(dirpath)
        patharr = fpath.split('/')
        try:
            key = getKey(dirpath)
            ret =0
            ret, info = put_file(token, key, dirpath)
            print(ret)
        except:
            traceback.print_exc()

def getKey(file):
    key = ''
    fpath, fname = os.path.split(file)
    patharr = fpath.split('/')
    if len(patharr) > 1:
    #    key = '' + fname
        #key = '/'.join(patharr[(len(patharr)-3):]) + '/' + fname
        key = '/'.join(patharr[1:]) + '/' + fname
        key = key.replace(rplpath,rlspath)
    else:
        key = fname
    print('key-g-->'+key)    
    return key

if __name__ == '__main__':
    updir(dir)
 
Share this