(第3坑)查找文件内容

题目:在之前“查找文件”的基础上,增加对文件内容的检索。仍然是设定某个文件夹,不同的是要再增加一个文本参数,然后列出这个文件夹(含所有子文件夹)里,所有文件内容包括这个搜索文本的文件。

import os
import chardet

def match(search_path,match_text):
    result_list = []

    for root, dirs, files in os.walk(search_path):
        # 遍历所有的文件

        for file in files:
            try:
                # 判断文件名是否以“.txt”结尾
                if file.endswith(".txt"):

                    # 获取文件的绝对路径
                    file_path = os.path.join(root,file)
                    # print(file_path)

                    # 判断文件的编码格式
                    with open(file_path, "rb") as obj1:
                        text_b = obj1.read()
                        text_encoding = chardet.detect(text_b)["encoding"]
                        # print(text_encoding)

                    # 用指定的编码格式打开文件,判断文本参数是否存在于文件内容
                    with open(file_path, "r", encoding=text_encoding) as obj2:
                        text = obj2.read()
                        if match_text in text:
                            result_list.append(file_path)

            except Exception as e:
                print("文件名:{},该文件处理出错!".format(file))

    return result_list



if __name__ == "__main__":

    # 提示用户输入路径
    while True:
        search_path = input("请输入搜索路径: ").strip()
        # 判断路径是否存在
        if os.path.exists(search_path):
            break
        print("路径不存在!")
    # 提示用户输入匹配的文字
    match_text = input("请输入匹配的文字: ")
    file_list = match(search_path,match_text)
    # 展示匹配到的文件
    print("匹配到的文件如下: ")
    for one in file_list:
        print(one)

注意:实际运用中,因为文件夹下可能有很多非文本文件,所以最好加上异常处理,避免报错跳出。

你可能感兴趣的:((第3坑)查找文件内容)