前言:在原部門的最後一天,有個需求,需要分兩步完成。
第一步:
有一堆照片在同一個文件夾下,根據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('輸入任意鍵退出!')
成果: