我正在尝试查找C:\
中的所有日志文件,然后在这些日志文件中找到一个字符串。如果找到该字符串,则输出应该是找到该字符串的日志文件的abs路径。以下是我到目前为止所做的事情。
import os
rootdir=('C:\\')
for folder,dirs,file in os.walk(rootdir):
for files in file:
if files.endswith('.log'):
fullpath=open(os.path.join(folder,files),'r')
for line in fullpath.read():
if "saurabh" in line:
print(os.path.join(folder,files))
答案 0 :(得分:2)
您的代码已损坏:
for line in fullpath.read():
语句fullpath.read()
将整个文件作为一个字符串返回,当您迭代它时,您将一次迭代一个字符。你永远不会找到字符串' saurabh'一个字符。
文件是它自己的行迭代器,所以只需将此语句替换为:
for line in fullpath:
另外,为了清洁起见,您可能需要在完成后关闭文件,无论是显式还是使用with
语句。
最后,您可能希望在找到文件时中断,而不是多次打印相同的文件(如果您的字符串多次出现):
import os
rootdir=('C:\\')
for folder, dirs, files in os.walk(rootdir):
for file in files:
if file.endswith('.log'):
fullpath = os.path.join(folder, file)
with open(fullpath, 'r') as f:
for line in f:
if "saurabh" in line:
print(fullpath)
break