运用:os.walk递回搜寻,档案内文
前天发的错误版本(已删除),掉入os.walk天坑,和python回圈不明确的陷阱内撞墙,今天本文是更正版。
套件:读旧版word .doc 先 pip install pypiwin32
读word .docx 请 pip install python-docx
import os, sys, docx
from win32com import client
流程:
旧版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、档案类型
搜寻後结果存档,打开来看看
特别注意:因为连续开启、关闭多个word档案,如果在除错执行中程序中断了,会造成word不正常关闭情况,还在背景运作。如果这时又重新测试程序,常常就卡住不动了。
请去"工作管理员"把word关档。
或是出现这个提示时,按yes
还不会创建ThinkPHP V5.1专案的朋友们可以先去看看创建ThinkPHP V5.1专案。 何...
WebPC 是我刚在 github 上开源(MIT)的一个远控工具,可以作爲 TeamViewer ...
Method程序设计中,可以说是将程序模组化,这样有助於加速程序的开发、便於分析与维护等,如果要重复...
准备讯息文本 依照参数说明,建立订单的资料结构(DAY3-参考),详细参数规格可以在永丰API技术规...
开始IaC之前,必先做好前置作业 昨天介绍了一些AWS建置环境的方法,今天会先做CloudForma...