#test.txt(5000行程度)から指定した以下2つの文字列を含む行の行番号を出力したいです。しかし何故か正常な行番号が取得できません。
a.指定文字列:SQL ordered by Elapsed Time(4,974行目)
b.指定文字列: --------------------------(最終行)
#test.txt SQL ordered by Elapsed Time DB/Inst: DB19C/DB19C Snaps: 31-41 -> Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code. -> % Total DB Time is the Elapsed Time of the SQL statement divided into the Total Database Time multiplied by 100 -> %Total - Elapsed Time as a percentage of Total DB time -> %CPU - CPU Time as a percentage of Elapsed Time -> %IO - User I/O Time as a percentage of Elapsed Time -> Captured SQL account for 6.7E+05% of Total DB Time (s): 0 -> Captured PL/SQL account for 2.3E+05% of Total DB Time (s): 0 Elapsed Elapsed Time Time (s) Executions per Exec (s) %Total %CPU %IO SQL Id ---------------- -------------- ------------- ------ ------ ------ ------------- GABYTES, SMALL_WRITE_MEGABYTES, LARGE_READ_MEGABYTES, LARG E_WRITE_MEGABYTES, SMALL_READ_REQS, SMALL_WRITE_REQS, SMALL_SYNC_READ_REQS, LARGE_READ_REQS, 0.3 1,018 0.00 3.E+03 .0 .0 f7xnvp44nukp7 insert into wrm$_snapshot_details (snap_id,dbid,instance_number,table_id,begin _time,end_time,step_id) values (:snap_id,:dbid,:instance_number,:bind1,:bind2 ,:bind3,:step_id) 0.3 12 0.02 3.E+03 .0 .0 axxh6fwbvnbpm --------------------------
#試した事
with open('sa.log') as fin: for row, text in enumerate(fin, start=1): text = text.rstrip() if text == r"SQL\sorder\sby\sElapsed\stime": dst_row = row break else: raise ValueError('Not Found') print(int(dst_row))
#Error
Traceback (most recent call last): File "C:\Users\Desktop\aaaaaaaaaaa\python.py", line 8, in <module> raise ValueError('Not Found') ValueError: Not Found >>>
簡単な内容でtxt fileを作成した場合は正常に行番号が取得できました。
#質問
どうしたら指定した文字列を含む行の行番号が取得できるのでしょうか?
また、行数が多いとちゃんと処理ができないバグ等あるのでしょうか?
ご教示いただけると幸いです。
よろしくお願いします・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/22 14:56 編集