在特定的python文件中查找字符串
我试图在很多文件中找到特定的字符串。例如,我在目录和子目录中查找包含字符串hello的文件 假设我的目录系统如下所示:来自Dir1的File1和File3包含字符串hello,而File2不包含。在Dir2中,File1包含字符串hello在特定的python文件中查找字符串,python,Python,我试图在很多文件中找到特定的字符串。例如,我在目录和子目录中查找包含字符串hello的文件 假设我的目录系统如下所示:来自Dir1的File1和File3包含字符串hello,而File2不包含。在Dir2中,File1包含字符串hello MainDir: -> Dir1 -> SubDir1 ->File1 ->File2 -> SubDir2 ->File3 -> Dir2 -
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来避免这种情况。不过我认为这不是问题所在。代码无法进入子目录并查找其中的文件。哦,我明白了。。。嗯,就是这样