问题陈述如下,有日志文件包含与测试结果相关的日志。例如,它包含像testcase1这样的文本,后跟测试用例和testcase2的日志,然后是测试用例的日志,依此类推。
如果用户想要提取testcase1和testcase3的日志,脚本应该读取用户的输入,如testcase1和testcase3。然后仅提取指定测试用例的日志。
在这种情况下,假设用户输入testcase1和testcase3,输出应该是testcase1下面的行和日志文件中的testcase3。
答案 0 :(得分:0)
在这里,您必须假设所有测试用例日志都在单独的行中,这意味着您在每个日志行后都有'\ n'。
然后你可以从linecache模块中读取文件。 现在,您应该再次使用特定格式的日志。在这里你提到它为[testcaseN] [Log message]和[testcaseN]应该有'testcase'和'N'共同作为变量。
因此,当您使用linecache模块获取所有行时,使用re模块将作为输入的testcaseN与获取的各行的第一个单词进行匹配。获得匹配后,显示结果。
答案 1 :(得分:0)
最后得到了提取文本的woking脚本
#从文本文件中读取特定行 #例如,在程序中我们读取文件并仅打印标题2和标题4下的行 #log文件可能包含空行 #示例日志文件 #Title #1 #dklfjsdkl; # G #sdfzsdfsdf #sdfsdfsdf #dsfsdfsd #dfsdf # #title #2 # #dfdf #dfdf #dfdf #df #dfd #d # #title3 #sdfdfd #dfdfd #dfd # #dfd # #title #4 #dfkdfkd #dfdkjmd #dfdkljm
in_list= []
while True:
i = raw_input("Enter title to be extracted (or Enter to quit): ")
in_list.append(i)
if not i:
break
print("Your input:", i)
print("While loop has exited")
in_list.remove(i)
print "Input list", in_list
flist = []
with open("C:\\text.txt", 'r') as inp:
#read the flie and storing into the list
flist =inp.readlines()
inp.close()
#making everything in the list to lower case
flist = map(lambda x:x.lower(),flist)
flist = [s.strip("\n") for s in flist]
print flist
# printing the complete log file from the list. Since once we put the vlaue in the list the new line character will be \ appended in the list element.
#hence striping with \n character
# for i in flist:
# print i.strip("\\n")
for j in range(len(in_list)):
result = any(in_list[j] in word for word in flist)
if result:
i_index = flist.index(in_list[j])
flag = 0
with open("C:\\output.txt",'a') as f1:
f1.write(flist[i_index])
f1.write("\n")
while flag ==0:
if "title" in flist[i_index+1]:
flag =1
else:
i_index += 1
f1.write(flist[i_index])
f1.write("\n")
i_index += 1
f1.close()