python 将一个目录下word转为t

发布时间:2019-08-02 11:14:11编辑:auto阅读(1552)

    不多说了,增加了容错性,还避免了中间在用py2exe时关于win32com的问题


    # -*- coding: cp936 -*-
    '''
    Created on 2015年11月21日
    
    @author: lushangqi
    '''
    #!D:\\My Python\\Trans_to_txt.py
    #注意Windows下路径表示 
    from win32com import client as wc
    import os
    import fnmatch
    
    
    all_FileNum = 0
    debug = 0
    
    
    def Translate(path):
        '''
        将一个目录下所有doc和docx文件转成txt
        该目录下创建一个新目录newdir
        新目录下fileNames.txt创建一个文本存入所有的word文件名
        本版本具有一定的容错性,即允许对同一文件夹多次操作而不发生冲突
        '''
        global debug, all_FileNum
        if debug:
            print path
        #该目录下所有文件的名字
        files = os.listdir(path) 
        #该目下创建一个新目录newdir,用来放转化后的txt文本
        New_dir = os.path.abspath(os.path.join(path, 'newdir'))
        if not os.path.exists(New_dir):
            os.mkdir(New_dir)
        if debug:
            print New_dir
        #创建一个文本存入所有的word文件名
        fileNameSet= os.path.abspath(os.path.join(New_dir, 'fileNames.txt'))
        o=open(fileNameSet,"w") 
        try:
            for filename in files:
                if debug:
                    print filename
                #如果不是word文件:继续
                if not fnmatch.fnmatch(filename, '*.doc') and not fnmatch.fnmatch(filename, '*.docx'):
                    continue;
                #如果是word临时文件:继续
                if fnmatch.fnmatch(filename, '~$*'):
                    continue;
                if debug:
                    print filename
                docpath = os.path.abspath(os.path.join(path,filename))
                
                #得到一个新的文件名,把原文件名的后缀改成txt
                new_txt_name = ''
                if fnmatch.fnmatch(filename, '*.doc'):    
                    new_txt_name = filename[:-4]+'.txt'
                else:
                    new_txt_name = filename[:-5]+'.txt'
                if debug:
                    print new_txt_name
                word_to_txt = os.path.join(os.path.join(path, 'newdir'),new_txt_name)
                print word_to_txt
                wordapp = wc.Dispatch('Word.Application')
                doc = wordapp.Documents.Open(docpath)
                #为了让python可以在后续操作中r方式读取txt和不产生乱码,参数为4
                doc.SaveAs(word_to_txt,4)
                doc.Close()
                o.write(word_to_txt+'\n')
                all_FileNum += 1
        finally:
            wordapp.Quit()
    
    if __name__ == '__main__':
        print '''
            将一个目录下所有doc和docx文件转成txt
            该目下创建一个新目录newdir
            新目录下fileNames.txt创建一个文本存入所有的word文件名
            本程序具有一定的容错性
        '''
        print('Enter your Director\'s path:')
        print("路径用\或\\表示均可")
        mypath = raw_input()
        print ('生成的文件有:')
        Translate(mypath)
        print 'The Total Files Numbers = ', all_FileNum
        raw_input()
        
    
    
    


关键字