2007-07-31

 

Python Cookbook 2.27 从Microsoft Word文档中获取文本

需求:

你需要将目录树中的Microsoft Word文档的内容提取出来,并保存到对应的文本文档中.

讨论:

使用PyWin32扩展,我们可以使用COM来访问Word,这样能实现需求:

import fnmatch, os, sys, win32com.client
wordapp = win32com.client.gencache.EnsureDispatch("Word.Application")
try:
    for path, dirs, files in os.walk(sys.argv[1]):
        for filename in files:
            if not fnmatch.fnmatch(filename, '*.doc'): continue
            doc = os.path.abspath(os.path.join(path, filename))
            print "processing %s" % doc
            wordapp.Documents.Open(doc)
            docastxt = doc[:-3] + 'txt'
            wordapp.ActiveDocument.SaveAs(docastxt,
                FileFormat= win32com.client.constants.wdFormatText)
            wordapp.ActiveDocument.Close( )
finally:
    # ensure Word is properly shut down even if we get an exception
    wordapp.Quit( )

对于Windows应用程序来说,有一个很好的特点是脚本可以使用COM来访问它们.而PyWin32扩展使得用Python使用COM变得异常容易.这个扩展能让你通过脚本完成许多windows系统任务,本节的脚本驱动Microsoft Word将目录树下的.doc文档中取出文本并存到对应的txt文档中.使用os.walk函数,我们可以简单的用一个for循环来遍历目录树,使用fnmatch.fnmatch函数 ,我们可以判断一个文件是否满足指定的扩展名,这里是'.doc',一旦我们确定文件是word文件,我们使用os.path来获得它的绝对路径,然后使用Word打开它,并保存文本内容为txt.
如果你没有安装Word,你需要使用完全不同的方法,一个方案是使用Open Office,它可以加载Word文档.另外的方法就是使用别的程序来读Word文档,如AntiWord等.我们在这里不做讨论了.

Comments: 发表评论



<< Home

This page is powered by Blogger. Isn't yours?