因为微信小程序的云开发,并没有类似于批量导出的函数,但是又想要将云存储中的相关文件批量下载下来。
思路
一、
尝试用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()
-
创建文件夹
# 获取此py文件路径,在此路径中保存文件 folder = os.getcwd() print(folder) # 创建文件夹 def mkdir(path): folder = os.path.exists(path) if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹 os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径
最终效果
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取