使用Python实现目录中文本查找关键字并且记录是那个文件,还要解决文件编码不同的问题
时间: 2024-02-03 08:13:26 浏览: 147
查找替换_python_文件管理_替换_
可以使用Python的os和codecs库实现目录中文本查找关键字并记录是哪个文件,同时解决文件编码不同的问题。
代码如下:
```python
import os
import codecs
def search_files(rootdir, keyword):
for filename in os.listdir(rootdir):
filepath = os.path.join(rootdir, filename)
if os.path.isdir(filepath):
search_files(filepath, keyword)
else:
try:
with codecs.open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
if keyword in content:
print("Keyword '{0}' found in file '{1}'".format(keyword, filepath))
except UnicodeDecodeError:
print("Error decoding file '{0}'".format(filepath))
# 示例:在当前目录查找包含关键字'python'的文件
search_files('.', 'python')
```
说明:
1. 函数`search_files`接收两个参数,`rootdir`表示要搜索的根目录,`keyword`表示要查找的关键字。
2. 使用`os.listdir`遍历目录下的所有文件和子目录。
3. 如果遍历到的是子目录,则递归调用`search_files`函数。
4. 如果遍历到的是文件,则使用`codecs.open`打开文件,并指定编码为`utf-8`。如果出现UnicodeDecodeError异常,则说明文件编码不是`utf-8`,这时直接打印错误信息即可。
5. 使用`f.read()`读取文件内容,并在其中查找关键字。
6. 如果找到了关键字,则打印文件路径和关键字。
7. 示例中调用`search_files('.', 'python')`表示在当前目录查找包含关键字'python'的文件。
阅读全文