有没有办法把bzr函数(log.show_log)的输出以脚本的形式自动返回,这样我就可以重新搜索一遍?

问题描述 投票:0回答:1

在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
python bazaar
1个回答
1
投票

show_log()不返回任何东西,而是写到它接受的第二个参数的日志格式中。

你指定的是 to_file=sys.stdout所以输出将被送到标准输出。

你可能想传入一个io.StringIO()对象作为to_file,然后调用.getvalue()来获取输出。

© www.soinside.com 2019 - 2024. All rights reserved.