文章内搜寻,doc docx txt 子目录下所有档 (Python)

运用:os.walk递迴搜寻,档案内文
前天发的错误版本(已删除),掉入os.walk天坑,和python迴圈不明确的陷阱内撞墙,今天本文是更正版。
套件:读旧版word .doc 先 pip install pypiwin32
读word .docx 请 pip install python-docx

import os, sys, docxfrom win32com import client

流程:

指定搜寻之目录 (或者预设为当前目录)选择要筛选的档案类型取得档案串列逐一打开档案,搜寻keywordreportsave result

旧版word .doc读档略为麻烦,解释一下,其它请download source code

#--- 找档案内容,有无 keyword 之存在# 参数 afile 档名  keyword 要搜寻的字# 传回: found : key:找到的位置 / value:该段落文字  def findDoc(afile, keyword):    found = dict()    try:        # 开启旧版word档的方式  .doc        word = client.gencache.EnsureDispatch('Word.Application')        word.Visible = 0        word.DisplayAlerts = 0        doc = word.Documents.Open(afile)        paras = doc.Paragraphs        n = 0         print(f'searching ... {afile}' )                      for p in paras:            n += 1  # 段落数            # 如果该段落有此一keyword            if keyword in p.Range.Text:                tmp = f'档案: {afile} 第{n}行找到< {keyword} >'                # dict 新增一笔 key:找到的位置 / value:该行文字                found[tmp] = p.Range.Text        doc.Close()   # 关档步骤,不可少             except:        err = f'档案: {afile} 读取错误'        found[0] = err            return found     

从console执行,会询问起始资料夹、keyword、档案类型
http://img2.58codes.com/2024/20111373g8flJtz6An.jpg
搜寻后结果存档,打开来看看
http://img2.58codes.com/2024/20111373OTb7R90ifQ.jpg

特别注意:因为连续开启、关闭多个word档案,如果在除错执行中程式中断了,会造成word不正常关闭情况,还在背景运作。如果这时又重新测试程式,常常就卡住不动了。
请去"工作管理员"把word关档。
http://img2.58codes.com/2024/20111373mDHaOkSjLn.jpg
或是出现这个提示时,按yes
http://img2.58codes.com/2024/20111373yGOTY3EaHz.jpg


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章