我有一个大型日志文件。 我每分钟都会添加操作系统的最新活动。 它看起来像:
#@#@#@#@#@#@#@
Time:12:00 PM, CPU:12.0,RAM:12334321,Network:1231231233,....
#@#@#@#@#@#@#@
Time:12:01 PM, CPU:14.0,RAM:12354621,Network:1239864833,....
#@#@#@#@#@#@#@
Time:12:02 PM, CPU:9.0,RAM:12398781,Network:1231598697,....
#@#@#@#@#@#@#@
我用“#@#@#@#@#@#@#@”作为分隔符。 每次我打开文件并写入(添加)当前状态然后关闭它。
要计算一些参数,我需要知道系统的最后一个情况,所以我需要打开文件并反向读取文件,直到我到达分隔符(#@#@#@#@# @#@#@)。 如何反向读取文件直到特定字符(在我的情况下是分隔符)(#@#@#@#@#@#@#@)并将其(操作系统的最后记录)放入列表或元组中。
谢谢!
答案 0 :(得分:1)
import re
p = re.compile(r'#@#@#@#@#@#@#@(?!.*?#@#@#@#@#@#@#@)(.*)$', re.DOTALL)
test_str = "#@#@#@#@#@#@#@ \nTime:12:00 PM, CPU:12.0,RAM:12334321,Network:1231231233,....\n#@#@#@#@#@#@#@\nTime:12:01 PM, CPU:14.0,RAM:12354621,Network:1239864833,....\n#@#@#@#@#@#@#@\nTime:12:02 PM, CPU:9.0,RAM:12398781,Network:1231598697,....\n#@#@#@#@#@#@#@\nTime:12:02 PM, CPU:9.0,RAM:12398781,Network:1231598697,....\nasasdas\ndsa\nd\n\nasd"
re.findall(p, test_str)
此处代替test_str
,您可以使用file.read()
。请参阅演示。