因为微信小程序的云开发,并没有类似于批量导出的函数,但是又想要将云存储中的相关文件批量下载下来。
思路
一、
尝试用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学习资料的小伙伴可以加点击下方链接自行获取