python搜索文件夹下doc、xls内容
时间: 2023-05-29 15:01:22 浏览: 110
作为AI语言模型,我只能介绍实现思路,并不能直接给出代码。
思路如下:
1. 使用Python的os模块遍历搜索目标文件夹。
2. 对于每个文件,判断其是否是.doc或.xls文件。可以使用Python的os.path.splitext()方法获取文件扩展名。
3. 如果是.doc或.xls文件,使用Python的win32com库打开文件并读取其内容。
4. 对于读取出来的内容进行字典化操作,方便后续的分析和查询。
5. 使用Python的re模块在字典内容中搜索想要的关键字。
6. 输出搜索结果。
参考代码:
```python
import os
import win32com.client
import re
# 遍历搜索目标文件夹
def search_files(folder_path):
for dirpath, dirnames, filenames in os.walk(folder_path):
for filename in filenames:
# 判断是否是.doc或.xls文件
if os.path.splitext(filename)[1] in ('.doc', '.xls'):
file_path = os.path.join(dirpath, filename)
# 打开文件并读取内容
try:
app = win32com.client.Dispatch('Word.Application') if os.path.splitext(filename)[1] == '.doc' else win32com.client.Dispatch('Excel.Application')
app.Visible = False
doc = app.Documents.Open(file_path) if os.path.splitext(filename)[1] == '.doc' else app.Workbooks.Open(file_path)
content = doc.Content.Text if os.path.splitext(filename)[1] == '.doc' else doc.Sheets[0].UsedRange.Value
doc.Close()
app.Quit()
except Exception as e:
print('Error:', e)
# 字典化操作
content_dict = {}
if os.path.splitext(filename)[1] == '.doc':
for line in content.split('\r'):
if '\t' in line:
key = line.split('\t')[0].strip()
value = line.split('\t')[1].strip()
content_dict[key] = value
else:
for row in content:
if row[0]:
content_dict[row[0]] = row[1]
# 按关键字搜索
for key, value in content_dict.items():
if re.search('要搜索的关键字', value):
print(key, value, file_path)
folder_path = '要搜索的文件夹路径'
search_files(folder_path)
```
阅读全文