在bzrlib中可能有更好的模块,但我一直没有找到。我希望能够将bzrlib函数的输出以脚本的形式返回,这样我就可以重新搜索。log.show_log()
的输出作为一个脚本,这样我就可以使用python的 re.search
函数来查找人可读的日志版本中的特定信息。
我试过使用简单的 str()
功能,但没有运气。我只得到NONE作为我的反馈。
这是我的代码。
parser = argparse.ArgumentParser()
parser.add_argument('-r', '--revnum', type=int, metavar='', required=True, help='Baseline revision number')
parser.add_argument('-d', '--directory',type=str, metavar='',required=True,help='Directory that repository in question is located')
args = parser.parse_args()
r1= args.revnum
d1= args.directory
print ''
print 'Directory containing repository: '+ (d1)
print ''
print ("Input revision number: %s" %(r1))
print ''
b = Branch.open (d1)
lf = log.LongLogFormatter(to_file=sys.stdout, levels=0)
h = log.show_log(b, lf, verbose=False, start_revision=r1, end_revision=r1)
mystring = str (h)
print mystring
result2 = re.findall(r'\d+\.\d+\.\d+ \[merge\]', mystring)
print result2
show_log()不返回任何东西,而是写到它接受的第二个参数的日志格式中。
你指定的是 to_file=sys.stdout
所以输出将被送到标准输出。
你可能想传入一个io.StringIO()对象作为to_file,然后调用.getvalue()来获取输出。