python怎么根据文件夹下含有多个关键词的txt文本,直接遍历文件夹下的全部文本文件和excl文件,然后把匹配到的所在行内容输出到新的文本里面
时间: 2024-02-05 12:14:10 浏览: 47
可以使用Python的`os`和`re`模块来实现。
首先,需要遍历文件夹下的所有文件。可以使用`os.walk`函数来实现:
```python
import os
for root, dirs, files in os.walk(folder_path):
for file_name in files:
file_path = os.path.join(root, file_name)
# 处理文件
```
其中,`folder_path`为文件夹的路径,`os.walk`会遍历`folder_path`下的所有文件夹和文件。`root`表示文件夹的路径,`dirs`表示子文件夹列表,`files`表示当前文件夹下的文件列表。`os.path.join`用于拼接文件路径。
然后,需要读取文本文件和excl文件,使用`re`模块匹配关键词,并将匹配到的行内容输出到新的文本文件中。具体代码如下:
```python
import os
import re
# 匹配的关键词列表
keywords = ["keyword1", "keyword2", "keyword3"]
# 输出文件路径
output_file = "output.txt"
with open(output_file, "w") as f_out:
for root, dirs, files in os.walk(folder_path):
for file_name in files:
file_path = os.path.join(root, file_name)
# 判断是否是文本文件或excl文件
if file_name.endswith(".txt") or file_name.endswith(".excl"):
with open(file_path, "r") as f_in:
for line in f_in:
# 匹配关键词
match = False
for keyword in keywords:
if re.search(keyword, line):
match = True
break
# 如果匹配到关键词,输出行内容到新文件中
if match:
f_out.write(line)
```
其中,`keywords`为需要匹配的关键词列表,`output_file`为输出文件路径。`with open(output_file, "w") as f_out:`用于打开输出文件,并使用`"w"`模式写入内容。`if file_name.endswith(".txt") or file_name.endswith(".excl"):`用于判断文件是否是文本文件或excl文件,使用`with open(file_path, "r") as f_in:`打开文件,并使用`"r"`模式读取内容。`for line in f_in:`遍历文件中的每一行,使用`re.search`函数匹配关键词。如果匹配到关键词,将行内容写入输出文件中。