美文网首页
(第3坑)查找文件内容

(第3坑)查找文件内容

作者: _简姑娘_ | 来源:发表于2020-10-18 22:29 被阅读0次

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

    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坑)查找文件内容

          本文链接:https://www.haomeiwen.com/subject/egbxmktx.html