编写核心代码
扩展功能,强化工具
学习python-pptx也有几天了,实在忍不住想要做个实例了,于是今天做了一个用利python-pptx来从pptx中提取所有文本的功能(不包含表格中的文本),具体有以下功能(软件的设计过程已录制好视频并发布在平台,大家可以关注我后在主页看到,也可以直接点击上面的链接看到):
1、从指定的文件夹中,对所有pptx(注意不是ppt,因为两者文档格式不同)进行文本提取。
2、提取出来的文本,以pptx的文件名加txt作为后缀进行保存,保存位置为程序中设定的targetPath,如果该目录不存在的话,则会先创建一个。
# coding=gbkimport osimport refrom pptx import Presentationclass ExtractPPTXText(): def __init__(self,params): self.errFlag = False self.msg = "" self.sourcePath = params["sourcePath"] if not os.path.exists(self.sourcePath): self.errFlag = True self.msg = "源文件夹不存在!" self.targetPath = params["targetPath"] if not os.path.exists(self.targetPath): os.makedirs(self.targetPath) self.run() def run(self): if self.errFlag: print(self.msg) return for file in os.listdir(self.sourcePath): if not file[-4:] == "pptx": continue if re.findall("^~",file): continue # 将文件传入getText,并返回文本列表 para_list = self.getText(os.path.join(self.sourcePath,file)) # 提取文件名与扩展名 fileName,expandName = os.path.splitext(file) # 组成新的文件名 newFileName = os.path.join(self.targetPath,fileName + ".txt") # 将文本列表保存到txt文件 self.saveText(para_list,newFileName) # 从pptx中返回文本列表 def getText(self,file): para_list = [] prs = Presentation("test.pptx") for slide in prs.slides: for shape in slide.shapes: for para in shape.text_frame.paragraphs: if len(para.text.strip()) == 0: continue else: para_list.append(para.text.strip()) return para_list # 保存文本 def saveText(self,para_list,file): with open(file,"w",encoding="gbk") as txt_file: txt_file.write("n".join(para_list)) print("{} 保存完成!".format(file)) def __str__(self): return self.msgif __name__ == '__main__': params = { "sourcePath":r"K:伍德春原创视频自动化2020-11-10", # 要进行提取的pptx的所在目录 "targetPath":r"K:伍德春原创视频自动化2020-11-10txt", # 提取后的txt文件要保存到的目录 } newobj = ExtractPPTXText(params)
头条号中可以插入代码块这功能很好,可以较好的展现代码,点赞。