我需要获取所有打开的Word文件,并找到一个内容中有特殊字符串的文件。
我们打开了3个单词的文档:Test.docx、Test2.doc和blabla.doc
编辑:让我们只专注于查找所有打开的文档。
word = win32com.client.GetObject(None, 'Word.Application')
for doc in word.Documents:
print("Next document is " + doc.name)
结果,它只找到最后一个打开的文件。并没有得到其他人。输出:
> Next document is blabla.doc
> Process finished with exit code 0
那么,如何获取所有打开的文件呢?
这在windows10系统上适用。它列出了winword.exe打开的所有文件。不仅是文档,因此必须为真实文档筛选结果:.doc,.docx.
l = [p.info for p in psutil.process_iter(attrs=['pid', 'name']) if 'winword.exe'.upper() in p.info['name']]
if len(l) > 0:
pid =l[0]['pid']
else:
# No winword.exe found
return []
p = psutil.Process(pid)
fileList = p.as_dict(attrs=['open_files']) # Get the list of all files opened by winword.exe. It must be filtered on doc, docx because there are many other files.