import shutil
import zipfile
import os
zipf = zipfile.ZipFile('/data/demo/case_imgs.docx')
tmp_dir = 'xx_wd'
if os.path.exists(tmp_dir):
shutil.rmtree(tmp_dir)
else:
os.mkdir(tmp_dir)
zipf.extractall(tmp_dir)
接下来是对图片的处理,这里只是转换成灰度图。
需要注意的是 docx
格式的文件解压缩后有固定结构。
对于图像文件,是放到解压目录下的 word/media
文件夹中。
from PIL import Image
inws = f'{tmp_dir}/word/media'
for x in os.listdir(inws):
if x.endswith('jpeg'):
print(x)
infile = os.path.join(inws, x)
im = Image.open(infile).convert("L")
im.save(infile)
image1.jpeg image2.jpeg image3.jpeg image4.jpeg image5.jpeg image6.jpeg
最后进行压缩:
from shutil import make_archive
import os
archive_name =os.path.join('.', 'xx_out')
root_dir = os.path.join(tmp_dir)
make_archive(archive_name, 'zip', root_dir, base_dir = '.')
'/home/jovyan/work/jupylab_houxue/pt05_tool/ch03_imgs/xx_out.zip'
将压缩的结果重命名为 docx 后缀的文件:
shutil.move(archive_name + '.zip', archive_name + '.docx')
'./xx_out.docx'