我们有一个包含以下两行的大型日志文件:00 LOG | Cycles Run: 120001
00 LOG ! Virtual: Max> ?????????? bytes (?.???? gb), Current> 640733184 bytes (?.???? gb).
00 LOG ! Virtual: Max> 1082470400 bytes (?.???? gb), Current> ????????? bytes (?.???? gb).
00 LOG ! Actual: Max> ????????? bytes (?.???? gb), Current> 472154112 bytes (?.???? gb).
00 LOG ! Actual: Max> 861736960 bytes (?.???? gb), Current> ????????? bytes (?.???? gb).
由于日志文件的大小很大,我们希望逐行读取(而不是一次读取缓冲区中的整个文本),匹配特定的模式集并在单独的变量中选取值。在
例如
^{pr2}$
我们想要o pick120001并存储在一个变量中,比如cycle。在
另一方面,我们分析这些行:00 LOG ! Virtual: Max> ?????????? bytes (?.???? gb), Current> 640733184 bytes (?.???? gb).
00 LOG ! Virtual: Max> 1082470400 bytes (?.???? gb), Current> ????????? bytes (?.???? gb).
00 LOG ! Actual: Max> ????????? bytes (?.???? gb), Current> 472154112 bytes (?.???? gb).
00 LOG ! Actual: Max> 861736960 bytes (?.???? gb), Current> ????????? bytes (?.???? gb).
用?标记的字符可以是任何数字。在
我们希望存储以下值:640733184 in var virtual_cur
1082470400 in var virtual_max
472154112 in var actual_cur
861736960 in var actual_max
在Python 3.6中编写了一个片段,但它正在打印空列表:import re
filename = "test.txt"
with open(filename) as fp:
line = fp.readline()
while line:
cycle_num = re.findall(r'00 LOG | Cycles Run: (.*?)',line,re.DOTALL)
line = fp.readline()
print (cycle_num[0])NOTE: I want to pick each values in seperate variables and use it
later on. Need to set 5 patterns one by one, pick value if it matches
any specific pattern and put it inrespective variable.
不确定第二个模式的通配符匹配。在
请给我们一个有效的方法。在