代码实现
#coding=utf-8 """ Description: 多文档格式转换工具 Author:伏草惟存 Prompt: code in Python3 env """ import os,fnmatch from win32com import client as wc from win32com.client import Dispatch,gencache ''' 功能描述:抽取文件文本信息 参数描述:1 filePath:文件路径 2 savePath: 指定保存路径 ''' def Files2Txt(filePath,savePath=''): try: # 1 切分文件上级目录和文件名 dirs,filename = os.path.split(filePath) # print('目录:',dirs,'\n文件名:',filename) # 2 修改转化后的文件名 typename = os.path.splitext(filename)[-1].lower() # 获取后缀 new_name = TranType(filename,typename) # print('新的文件名:',new_name) # 3 文件转化后的保存路径 if savePath=="": savePath = dirs else: savePath = savePath new_save_path = os.path.join(savePath,new_name) print('保存路径:',new_save_path) # 4 加载处理应用 wordapp = wc.Dispatch('Word.Application') mytxt = wordapp.Documents.Open(filePath) mytxt.SaveAs(new_save_path,4) mytxt.Close() except Exception as e: pass ''' 功能描述:根据文件后缀修改文件名 参数描述:1 filePath:文件路径 2 typename 文件后缀 返回数据:new_name 返回修改后的文件名 ''' def TranType(filename,typename): # 新的文件名称 new_name = "" if typename == '.pdf' : # pdf->txt if fnmatch.fnmatch(filename,'*.pdf') : new_name = filename[:-4]+'.txt' # 截取".pdf"之前的文件名 else: return elif typename == '.doc' or typename == '.docx' : # word->txt if fnmatch.fnmatch(filename, '*.doc') : new_name = filename[:-4]+'.txt' elif fnmatch.fnmatch(filename, '*.docx'): new_name = filename[:-5]+'.txt' else: return else: print('警告:\n您输入[',typename,']不合法,本工具支持pdf/doc/docx格式,请输入正确格式。') return return new_name if __name__ == '__main__': filePath1 = os.path.abspath(r'../dataSet/Corpus/wordtotxt/一种改进的朴素贝叶斯文本分类方法研究.doc') filePath2 = os.path.abspath(r'../dataSet/Corpus/pdftotxt/改进朴素贝叶斯文本分类方法研究.pdf') filePath3 = os.path.abspath(r'../dataSet/Corpus/wordtotxt/科技项目数据挖掘决策架构.docx') Files2Txt(filePath3)遍历读取文件
遍历文件的类TraversalFun : TraversalDir、 AllFiles
遍历目录文件TraversalDir : AllFiles(self.rootDir)
递归遍历文件AllFiles: AllFiles(self,rootDir)
判断是否为文件isfile :打印出文件名
判断是否是目录isdir :递归遍历
遍历文件源码实现
# coding=utf-8 """ Description: 遍历读取文件名 Author:伏草惟存 Prompt: code in Python3 env """ import os,time ''' 功能描述:遍历目录处理子文件 参数描述: 1 rootDir 目标文件的根目录 ''' class TraversalFun(): # 1 初始化 def __init__(self,rootDir): self.rootDir = rootDir # 目录路径 # 2 遍历目录文件 def TraversalDir(self): TraversalFun.AllFiles(self,self.rootDir) # 3 递归遍历所有文件,并提供具体文件操作功能 def AllFiles(self,rootDir): # 返回指定目录包含的文件或文件夹的名字的列表 for lists in os.listdir(rootDir): # 待处理文件夹名字集合 path = os.path.join(rootDir, lists) # 核心算法,对文件具体操作 if os.path.isfile(path): print(os.path.abspath(path)) # 递归遍历文件目录 elif os.path.isdir(path): TraversalFun.AllFiles(self,path) if __name__ == '__main__': time_start=time.time() # 根目录文件路径 rootDir = r"../dataSet/Corpus/EnPapers" tra=TraversalFun(rootDir) # 默认方法参数打印所有文件路径 tra.TraversalDir() # 遍历文件并进行相关操作 time_end=time.time() print('totally cost',time_end-time_start,'s') 6 实战案例:遍历文件批量抽取新闻文本内容算法思路
引用外部文本抽取模块:import ExtractTxt as ET
参数方法使用:TraversalFun(rootDir,ET.Files2Txt,saveDir)
创建保存根目录:os.path.abspath
递归遍历文件:func(path, save_dir)