0x00 背景
最近想要搭建一个对象存储服务,并把原本在七牛云上面的图片全部转移到该服务中管理,但是七牛云上面的图片命名本来就很乱,不符合批量管理的要求,所以不能从七牛云直接下载,而是要把图片名格式化一下,再下载下来,这种工作,用python是最适合不过了,于是就有了这篇文章。
0x01 过程
1. 命名规则转换
原本图片的命名是images/1979-01-01T0000/1.png
这样的格式,现在要统一放在一个文件夹,所以需要去掉images文件夹,并把时间和图片名通过”-“拼接起来。
2. 将七牛云上面的文件名及其对应的url列表导出
这一步可以直接在七牛云上面批量操作,导出的文件是是csv格式的,所以在python中可以使用csv库直接进行读取
3. 编写代码
import requests
import csv
def download_img(img_url, api_token, name):
print (img_url)
header = {"Authorization": "Bearer " + api_token} # 设置http header,视情况加需要的条目,这里的token是用来鉴权的一种方式
r = requests.get(img_url, headers=header, stream=True)
print(r.status_code) # 返回状态码
if r.status_code == 200:
open('C:\\Users\\Jacky\\Pictures\\blogpic\\' + name, 'wb').write(r.content) # 将内容写入图片
print("done")
del r
if __name__ == '__main__':
api_token = "apitoken"
record = csv.reader(open('urls', 'r', encoding='utf-8-sig'))
for i in record:
name = i[0]
# 改名
name = name[7:].replace('/', '-')
# 提取图片链接
url = i[1]
download_img(url, api_token, name)
0x02 总结
非常简单,就封装一个请求函数,然后读取csv文件里面的字段,给图片重命名并把url传入请求函数,把图片下载到指定目录。