在特定的python文件中查找字符串

在特定的python文件中查找字符串,python,Python,我试图在很多文件中找到特定的字符串。例如,我在目录和子目录中查找包含字符串hello的文件 假设我的目录系统如下所示:来自Dir1的File1和File3包含字符串hello,而File2不包含。在Dir2中,File1包含字符串hello MainDir: -> Dir1 -> SubDir1 ->File1 ->File2 -> SubDir2 ->File3 -> Dir2 -

我试图在很多文件中找到特定的字符串。例如,我在目录和子目录中查找包含字符串hello的文件

假设我的目录系统如下所示:来自Dir1的File1和File3包含字符串hello,而File2不包含。在Dir2中,File1包含字符串hello

MainDir:
 -> Dir1
    -> SubDir1
       ->File1
       ->File2
    -> SubDir2
       ->File3
 -> Dir2 
    ->SubDir1
      ->File1
      ->SubDir1.1
        ->SubDir1.1.1
          -> File1
          -> File2
我的代码:

 path = "C:\MainDir" #I also get error if I write C:\MainDir\Dir2\SubDir1
 word = "hello"
 for root, dirs, files in os.walk(path):
    for name in files:
        if name.endswith(".txt"):
            with open(os.path.join(path, name)) as fle:
                my_files_content = fle.read()
            if word in my_files_content:
                print fle.name

如果我写完整的路径,If会找到包含字符串hello的文件,例如:path=C:\MainDir\SubDir1或C:\MainDir\Dir2\SubDir1.1\SubDir1.1,但是如果我只写代码中的路径,它会给我一个错误,没有这样的文件或目录:

问题是你会遇到很多不同类型的文件,python不能只打开任何文件,因为它需要管理员的一半,或者它无法像回收站那样获得访问权限,所以问题是您是否需要限制文件,所以您只打开“.txt”文件?当然,我有一个代码,可以做一个巨大的搜索,并列出我的目录中的所有项目,使用它的情况下,我想找到恶意软件,但我从来没有得到它来打开一堆不同类型的文件

所以我现在编辑了我的代码,在任何人的pc下载上进行搜索,你所要做的就是准确地复制代码并运行它,如果你运行windows,它应该打印你下载的所有目录

import os
folder_path = (os.path.expanduser('~\\Downloads'))
for file_object in os.listdir(folder_path):
    file_object_path = os.path.join(folder_path, file_object)
    if os.path.isfile(file_object_path):
        print (file_object_path)
    else:
        print (file_object_path)

问题是path是您设置的变量,因此它不会添加到path的子目录中。因此,您应该执行openos.path.joinroot,而不是openos.path.joinpath,name。

我修复了您的代码,并在我的系统中测试良好:

    import os
    paths = r"C:\MainDir" #I also get error if I write C:\MainDir\Dir2\SubDir1
    word = "hello"
    for root, dirs, files in os.walk(paths):
        for name in files:
            if name.lower().endswith(".txt"):
                with open(os.path.join(root, name)) as fle:
                    my_files_content = fle.read()
                    if word in my_files_content:
                        print fle.name

您加入了一个错误的路径,这是一个教程链接。

不确定是否直接复制和粘贴了代码,但您缺少路径名的结束符。我怀疑您直接编写了类似c:\foo\bar.txt的内容,并将\f和\b解释为转义序列。你可以重复使用反斜杠c:\\foo\\bar.txt或使用原始字符串rc:\foo\bar.txt来避免这种情况。不过我认为这不是问题所在。代码无法进入子目录并查找其中的文件。哦,我明白了。。。嗯,就是这样