前言:在原部门的最后一天,有个需求,需要分两步完成。
第一步:
有一堆照片在同一个文件夹下,根据excel读取规则,如下图
因为比较乱,所以需要把图片放在一个个按“门店名称”创建的文件夹下,以供部门同事后续核对
from PIL import Image
from docx import Document
from docx.shared import Inches
from docx import enum
import openpyxl
import shutil
import os
import traceback
file_path = os.path.abspath('.')
#第一部分:把图片根据规则整理到不同的文件夹内
print(os.listdir(file_path))
pic_path = file_path + '\\' + '5G门头点检' + '\\'
# print(pic_path)
data = openpyxl.load_workbook('图片清单.xlsx')
data_sheet = data['Sheet1']
maxrow = data_sheet.max_row + 1
for i in range(2, maxrow):
store_name = data_sheet["L" + str(i)].value #门店名称
pic_name = data_sheet["Q" + str(i)].value #图片名称
old_pic_path = pic_path + pic_name
new_file_path = file_path + '\\' + store_name
try:
os.makedirs(new_file_path) #创建文件夹
except:
continue
finally:
shutil.copy(old_pic_path, new_file_path)
for pic_file in os.listdir(file_path):
if os.path.isdir(pic_file):
print('{}是文件夹'.format(pic_file))
else:
print('{}不是文件夹'.format(pic_file))
成果:
第二步:
等同事核对完后,需要将图片放在一个word内,一页一个门店,顺序为:门店名称——>照片1——>照片2——>照片3——>照片4
#第二部分:把图片根据顺序放在同一个word中
pic_file_list = os.listdir(file_path)
doc = Document()
try:
for pic_file in pic_file_list:
if os.path.isdir(pic_file) and pic_file != '5G门头点检':
store_pic_path = file_path + '\\' + pic_file
# print(store_pic_path)
for root, dirs, files in os.walk(store_pic_path):
doc.add_paragraph(pic_file)
for file in files:
if file.endswith('.jpg') or file.endswith('.png'):
try:
doc.add_picture(os.path.join(root, file), width=Inches(1.5)) # 添加图, 设置宽度
except:
jpg_ima = Image.open(os.path.join(root, file)) # 打开图片
jpg_ima.save(os.path.join(root, file)) # 保存新的图片
doc.add_picture(os.path.join(root, file), width=Inches(1.5)) # 添加图, 设置宽度
doc.add_page_break() #换页
doc.save(file_path + '\\' + 'all_pic.docx')
print('已经全部完成!')
except:
traceback.print_exc()
finally:
a = input('输入任意键退出!')
成果: