有没有办法 return bzr 函数 (log.show_log) 自动输出为脚本,这样我就可以 re.search 通过它?

Is there a way to return the bzr function (log.show_log) output as a script automatically so I can re.search through it?

通常在 bzrlib 中可能有一个更好的模块,但我没能找到它。我希望能够 return 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() 没有 return 任何东西,而是写入它接受的日志格式化程序作为它的第二个参数。

您正在指定 to_file=sys.stdout,因此输出将转到标准输出。

您可能希望将 io.StringIO() 对象作为 to_file 传递,然后对其调用 .getvalue() 以获取输出。