利用py批量下载文件,并且给文件分类!

394 阅读2分钟

因为微信小程序的云开发,并没有类似于批量导出的函数,但是又想要将云存储中的相关文件批量下载下来。

思路

一、

尝试用nodejs遍历文件夹下载之后,发现 1、没办法判断云服务器的存储路径 2、nodejs添加图片并打包是要把图片转换为base64编码的。

二、

将所有要下载的文件的云存储地址存储到数据库中,在前端将其转换为http的url地址,整理到xlsx文件中。下载下来,再用py批量下载,并且实现分类。

1.首先将数据库中的关于要下载的文件的url地址利用js导出为一个excel文件。

2.读取xlsx,使用了py中的xlrd包。读取文件的第一列就行了。col1_values是一个list对象。

def main():
    book = xlrd.open_workbook('./文件下载地址.xlsx')
    sheet1 = book.sheets()[0]
    col1_values = sheet1.col_values(0)
    download(col1_values)

3.将col1_values这个list对象传入download函数进行下载。使用了split对url进行分割,并且跟据分割的结果创建文件夹实现分类。 一定要注意记得加上 ’ \ '

def download(list):
    # 通过正则匹配
    pic_url = list[1:]  # 去除掉tempurl
    for key in pic_url:
        print("开始下载:" + key + "\r\n")
        try:
            pic = requests.get(key, timeout=5)
        except requests.exceptions.ConnectionError:
            print('下载失败')
            continue
        # 保存图片路径
        dir = key.split('/')[3]  # 学号+姓名 命名文件夹
        mkdir(folder + '/' + dir)  # 创建文件夹
        dir1 = key.split('/')[4]  # 内容 命名文件
        dir = folder + '/' + dir + '/' + dir1  # 下载文件的保存路径
        fp = open(dir, 'wb')
        fp.write(pic.content)
        fp.close()
  1. 创建文件夹

    获取此py文件路径,在此路径中保存文件

    folder = os.getcwd() print(folder)

    创建文件夹

    def mkdir(path): folder = os.path.exists(path)

    if not folder:  # 判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(path)  # makedirs 创建文件时如果路径不存在会创建这个路径
    

最终效果

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入