python - 使用python从某行中查找空行的行号
问题描述
我有一个包含堆栈跟踪的文件。我的想法是在该文件中搜索某个单词,如果找到,则将该行中的内容获取到下一个空行。下面是我的代码 -
tdfilename = r"C:\Users\Dev\Desktop\dummystacktrace"
tdf = open(tdfilename)
for num, l in enumerate(tdf, 1):
if "java.lang.Thread.State: RUNNABLE" in l:
runnable += 1
if "java.lang.Thread.State: WAITING (on object monitor)" in l:
objmonitorwaiting += 1
linenum = num
tdf.close()
我能够得到linenum
我找到的字符串的行号(),这里我正在搜索的字符串是java.lang.Thread.State: WAITING (on object monitor)
但是我如何从该点(linenum
)获取下一个空行的行号,即第 2 行到第 10 行或第 111 行并将所有详细信息保存到变量中。
虚拟堆栈跟踪 -
"Agent Execution" #10 daemon prio=5 os_prio=0 tid=0x000074563546f83c4c28000 nid=0x66760e in Object.wait() [0x00007f834737776cf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000800567670b280> (a com.wily.util.adt.BlockingQueue)
at java.lang.Object.wait(Object.java:502)
at com.wily.util.adt.BlockingQueue.interruptableDequeue(BlockingQueue.java:123)
- locked <0x00000000800567670b280> (a com.wily.util.adt.BlockingQueue)
at com.wily.util.task.AsynchExecutionQueue.doTask(AsynchExecutionQueue.java:200)
at com.wily.util.task.ATask$CoreTask.run(ATask.java:132)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"Thread Monitor Heartbeat Heartbeat" #6 daemon prio=5 os_prio=0 tid=0x0000342523454c4c26000 nid=0x2260d in Object.wait() [0x00007f8789078903777d0000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000008057567004b38> (a com.wily.util.heartbeat.IntervalHeartbeat)
at java.lang.Object.wait(Object.java:502)
at com.wily.util.heartbeat.IntervalHeartbeat.waitForBehaviorIfEmpty(IntervalHeartbeat.java:570)
- locked <0x000000008057567004b38> (a com.wily.util.heartbeat.IntervalHeartbeat)
at com.wily.util.heartbeat.IntervalHeartbeat.access$1(IntervalHeartbeat.java:562)
at com.wily.util.heartbeat.IntervalHeartbeat$HeartbeatRunnable.run(IntervalHeartbeat.java:667)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"Agent Heartbeat" #5 daemon prio=5 os_prio=0 tid=0x00007f834567465c4c24000 nid=0x60c sleeping[0x00007f8757563778d1000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.wily.util.heartbeat.IntervalHeartbeat$HeartbeatRunnable.run(IntervalHeartbeat.java:673)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
请澄清。
解决方案
在 python 中使用字符串的固有布尔性质。
tdfilename = r"C:\Users\Dev\Desktop\dummystacktrace"
tdf = open(tdfilename)
endnum = None
for num, l in enumerate(tdf, 1):
if "java.lang.Thread.State: RUNNABLE" in l:
runnable += 1
if "java.lang.Thread.State: WAITING (on object monitor)" in l:
objmonitorwaiting += 1
linenum = num
if not l.strip() and num > linenum and endnum is None:
end_num = num
tdf.close()
推荐阅读
- sql-server - 为什么'INSERT INTO TABLE'失败但'INSERT INTO TABLE(VALUES)'有效
- python - django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)"
- c# - 如何在 SQL Server 的翻转视图中显示图像
- java - Java:做静态 HTTP 请求是个好习惯吗?
- java - net.ucanaccess.jdbc.UcanaccessSQLException
- javascript - 在 chrome 的性能选项卡中调查“其他”时间
- c# - ExecuteScalar, ExcuteReader...已经有一个打开的 DataReader 与此命令关联,必须先关闭
- apache-nifi - 将目录作为参数传递给 ExecuteStreamCommand
- javascript - 将组件作为字符串存储在变量中并在Vue JS中通过变量呈现
- java - 电子产品商店