将DOC、RTF格式文件批量转为TXT格式文件

       最近在做文档文本分析的工作。在工作过程中碰到一个问题,就是需要用Python语言将DOC、RTF格式文件批量转换为TXT格式文件。同时需要保证文本内容在转换后,文本内容格式不会发生改变。通过在网上资料的查找,编写了解决此问题的Python代码。现将代码贴出来,并进行部分讲解。

       此问题的解决过程中,主要使用了win32com模块,这个模块是和window链接的模块。下载地址为:点击打开链接

       以下即为解决此问题过程中,完成的代码:

from glob import glob
import shutil
import os
import warnings
warnings.filterwarnings(action='ignore',category=UserWarning,module='gensim')
import win32com
import win32con
import win32gui
import codecs
from win32com.client import Dispatch
import pythoncom
import os
import sys


dataset_loca=sys.argv[1]
dataset_loca3=sys.argv[2]+'/'

class MSOffice2txt():
  def __init__(self, fileType=['doc','ppt']):
    self.docCom = None
    self.pptCom = None
    pythoncom.CoInitialize()
    if type(fileType) is not list:
      return 'Error, please check the fileType, it must be list[]'
    for ft in fileType:
      if ft == 'doc':
        self.docCom = self.docApplicationOpen()
  def close(self):
    self.docApplicationClose(self.docCom)
 
  def docApplicationOpen(self):
    docCom = win32com.client.Dispatch('Word.Application')
    docCom.Visible = 1
    docCom.DisplayAlerts = 0
    docHwnd = win32gui.FindWindow(None, 'Microsoft Word')
    win32gui.ShowWindow(docHwnd, win32con.SW_HIDE)
    return docCom
 
  def docApplicationClose(self,docCom):
    if docCom is not None:
      docCom.Quit()
 
  def doc2Txt(self, docCom, docFile, txtFile):
    doc = docCom.Documents.Open(FileName=docFile,ReadOnly=1)
    doc.SaveAs(txtFile, 2)
    doc.Close()
 
 
    

  def translate(self, filename, txtFilename):
    if filename.endswith('doc') or filename.endswith('docx'):
      if self.docCom is None:
        self.docCom = self.docApplicationOpen()
      self.doc2Txt(self.docCom, filename, txtFilename)
      return True
    else:
      return False


files = glob(dataset_loca) 
oldfile=[]
count=0
msoffice = MSOffice2txt()
for file_name in files:
  tmpp=file_name
  tmpp=tmpp.split('\\',2)[-1]
  tmpp=tmpp.split('.',1)[0]
  tmpp=tmpp.replace(' ','_')
  shutil.copyfile(file_name,dataset_loca3+tmpp+'.doc')
  count=count+1
  msoffice.translate(dataset_loca3+tmpp+'.doc', dataset_loca3+tmpp+'.txt')

       在运行过程中,需要输入两个参数:第一个为转换文件DOC、RTF的源目录的绝对地址;第二个为转换后的TXT格式文件存放的绝对地址。

       转换示例:

       

        将E:/CSDN/start/*.doc路径下的所有doc格式文件批量转换为TXT文件存放至E:/CSDN/end路径下。

        下载此程序的源码地址为:https://github.com/XiaoYaoNet/Tran

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值