# -*- coding: utf-8 -*-
"""
对一个word文档中的图片提取并进行保存,word路径#获取文件夹下的word文档列表,路径自定义
保存的图片名称为:文档名_image序号,且保存在和word文档同一目录下
如需批量修改文件名请使用下一个程序
@author: TonyMa
"""
import docx
import os, re
def get_pictures(word_path, result_path):
"""
图片提取
:param word_path: word路径
:return:
"""
try:
doc = docx.Document(word_path)
dict_rel = doc.part._rels
for rel in dict_rel:
rel = dict_rel[rel]
if "image" in rel.target_ref:
if not os.path.exists(result_path):
os.makedirs(result_path)
img_name = re.findall("/(.*)", rel.target_ref)[0]
word_name = os.path.splitext(word_path)[0]
if os.sep in word_name:
new_name = word_name.split('\\')[-1]
else:
new_name = word_name.split('/')[-1]
img_name = f'{new_name}-'+f'{img_name}'
with open(f'{result_path}/{img_name}', "wb") as f:
f.write(rel.target_part.blob)
except:
pass
if __name__ == '__main__':
#获取文件夹下的word文档列表,路径自定义
os.chdir('C:/Users/TonyMa/Desktop/chap5_12')
spam=os.listdir(os.getcwd())
for i in spam:
get_pictures(str(i),os.getcwd())
# -*- coding: utf-8 -*-
"""
批量修改png图片文件名
在 #设置新文件名 这一行进行新文件名设置
@author: TonyMa
"""
import os
path=input('请输入文件路径(结尾加上\):')
#获取该目录下所有文件,存入列表中
fileList=os.listdir(path)
numoffile = len(fileList)
n=0
for i in fileList:
#设置旧文件名(就是路径+文件名)
oldname = path + os.sep + fileList[n] # os.sep添加系统分隔符
#设置新文件名
newnameend = '5-'+str(n+85)+'.png'
newname = path + os.sep + newnameend
#用os模块中的rename方法对文件改名
os.rename(oldname,newname)
#显示修改结果
print('正在进行',n+1,'/',numoffile,': ',fileList[n],'======>',newnameend)
n+=1
第一段代码用于提取图片,第二段代码批量修改文件名
参考:
如何使用Python提取Word文档中的图片? - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/373394808
Python批量修改文件名 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/367299550