我想在long.json loggly文件中搜索特定的字符串,包括它的行号,还想在搜索行的上方和下方打印5行。你能帮我吗?你知道吗
它总是返回“未找到”。
在此之后,现在我只得到一些输出与下面显示的程序。
打开('日志.json','r')作为f:
对于ln,在枚举(f)中的行:
如果行中出现“error CRASHLOG”:
i=ln-25
对于i in(ln-25,ln+25):
l=linecache.getline('日志.json',i)
i+=1
打印(ln,l)
打印(“下一个错误”)
Tags:
file.readlines()
返回行列表。行不包含换行符(\n
)。你知道吗您需要指定换行符以匹配该行:
如果要查找包含目标字符串的行,则需要迭代这些行:
顺便说一句,这种工作很容易用
grep(1)
完成:更新
下面是更完整的代码:
我肯定它实际上返回“未找到”,但我把它归结为焦虑引起的叫喊。你知道吗
data
是一个列表。关于list
类型(http://docs.python.org/2/tutorial/datastructures.html)的文档说明list.index(x)
返回“值为x的第一个项的列表中的索引。如果没有这样的项,则是错误的。”因此,只报告那些只包含您指定的字符串而不包含其他字符的行。正如falsetru在她/他的回答中指出的那样,如果日志行上没有其他信息,那么您必须将
readlines()
确保的新行包含在它返回的列表中的每一行的末尾(即使在Windows系统上,只要您以文本模式打开文件,这是默认值)。没有这一点就没有比赛的机会。你知道吗如果行中包含其他信息,那么更好的测试可能确实是使用她/他建议的
x in string
,但我怀疑您可能有兴趣了解它比简单的相等性测试需要更多的处理。我也这么想,但这不是我的问题。。。你知道吗相关问题 更多 >
编程相关推荐