python 华为云图片上传
最近在弄华为云上传图片后把地址写到Excel表格的时候遇到一些问题,问题的解决思路在这里给捋一下。别问为什么当时写爬虫的时候为什么不直接把网址给写下来,因为闲的慌????。案例1:1,给一个Excel表格,如下:2,给一些图片:3,通过观察Excel表格和图片,可以观察出食谱名称和图片名称唯一的差别就是 “.jpg”4,解决思路:'''这里直接读取Excel表格的表头名称,然后用OS库读取图片名称
·
最近在弄华为云上传图片后把地址写到Excel表格的时候遇到一些问题,问题的解决思路在这里给捋一下。
别问为什么当时写爬虫的时候为什么不直接把网址给写下来,因为闲的慌🤡。
案例1:
1,给一个Excel表格,如下:
2,给一些图片:
3,通过观察Excel表格和图片,可以观察出食谱名称和图片名称唯一的差别就是 “.jpg”
4,解决思路:
'''
这里直接读取Excel表格的表头名称,
然后用OS库读取图片名称,然后进行判断对比
'''
# 读取Excel表
read = pd.read_excel('./data/食谱库.xlsx',sheet_name='果蔬榨汁')
# 读取图片名称
file_list = os.listdir('./果蔬榨汁')
# 遍历表头 写个嵌套循环就OK了
for i in range(len(read)):
title = read["食谱名称"][i]
up_temp = []
for x in file_list:
if x == title + '.jpg':
up_temp.append(x)
5,如何连接华为云和创建桶可以看官方文档,完整代码:
import pandas as pd
import csv
import json
import xlrd
import os
import re
import requests
import uuid
from xlwt import *
# 引入模块
from obs import ObsClient #用于连接华为云OBS的库
# 读取Excel表
read = pd.read_excel('./data/食谱库.xlsx',sheet_name='果蔬榨汁')
# 读取图片名称
file_list = os.listdir('./果蔬榨汁')
# 遍历表头 写个嵌套循环就OK了
obsClient = ObsClient(
access_key_id='', # 你的华为云的ak码
secret_access_key='', # 你的华为云的sk
server='' #你的桶的地址
)
for i in range(len(read)):
title = read["食谱名称"][i]
up_temp = []
for x in file_list:
if x == title + '.jpg':
up_temp.append(x)
if up_temp:
urllist = []
for imgpath in up_temp:
content = open('./果蔬榨汁/'+str(imgpath), 'rb')
# obsClient.putContent参数解析('你的桶名','对象名','上传的内容')
resp = obsClient.putContent('', imgpath, content=content)
# 获取上传的URL
res = resp.body.objectUrl
urllist.append(res)
# 利用json.dumps 对网址进行编码,防止显示错误
print(json.dumps(urllist))
read.loc[i,"食谱图片"] = json.dumps(urllist)
# 直接利用pandas的to_excel写入表格
read.to_excel('./食谱库.xlsx')
结果展示(这里存储的格式我用了列表,有小伙伴觉得不太行可以自己改一下):
看吧,很简单是不是有手就行,但是标题的正则表达式匹配呢?
我们来看第二个案例:
1,一样的Excel
2,但是!!!! 仔细观察你会发现图片和穴位编号不一样,穴位编号只有BL1之后的文字就没有了,而且它还有三张图片。
3,啊这。。。。。就用到正则表达式了,也是很简单
'''
我们这里用到的是
re.search 扫描整个字符串并返回第一个成功的匹配
思路一下子就有了是不是
'''
# 我们这里规定一个中文编码范围,用来匹配的
mo = r'[\u4e00-\u9fa5]'
read = pd.read_excel('./data/经络穴位-V3.xlsx')
file_list = os.listdir('./img')
# 老方法 嵌套循环
for i in range(len(read)):
title = read["穴位编号"][i]
up_temp = []
for x in file_list:
#正则表达式匹配
index = re.search(mo, x).start()
no = x[0:index]
print(no)
if title == no:
up_temp.append(x)
然后这里的上传华为云的代码和上边的一样,只需要把连接华为的代码复制下来就可以了。
4,结果展示
可以看到列表里边有三个网址,证明代码对了。nice!
最后呢打个广告,这是我朋友录制的一个uniapp的教材,绝对良心教程,大家可以去B站支持一下
射射大家!
更多推荐
所有评论(0)