Python 有没有一种方法可以自动将bzr函数(log.show_log)输出作为脚本返回,这样我就可以重新搜索它?
一般来说,bzrlib中可能有一个更好的模块来实现这一点,但我一直没有找到它。我希望能够返回bzrlib函数的输出:Python 有没有一种方法可以自动将bzr函数(log.show_log)输出作为脚本返回,这样我就可以重新搜索它?,python,bazaar,Python,Bazaar,一般来说,bzrlib中可能有一个更好的模块来实现这一点,但我一直没有找到它。我希望能够返回bzrlib函数的输出:log.show_log()作为脚本,这样我就可以使用pythonre.search函数在人类可读的日志版本中查找特定信息 我尝试过使用简单的str()函数,但没有成功。作为我的反馈,我只得到一个 这是我的密码: parser = argparse.ArgumentParser() parser.add_argument('-r', '--revnum', type=int, me
log.show_log()
作为脚本,这样我就可以使用pythonre.search
函数在人类可读的日志版本中查找特定信息
我尝试过使用简单的str()
函数,但没有成功。作为我的反馈,我只得到一个
这是我的密码:
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()不返回任何内容,但它会将作为第二个参数接受的内容写入日志格式化程序
您将指定给_file=sys.stdout
,因此输出将成为标准输出
您可能希望将io.StringIO()对象作为_文件传入,然后对其调用.getvalue(),以获得输出。请展示一些代码-不看它很难判断出哪里出了问题。我已更新了我的原始帖子,以包含我的代码。谢谢你是说像这样吗
lf=log.LongLogFormatter(to_file=io.StringIO().getvalue(),levels=0)
我用这段代码让它工作起来old_stdout=sys.stdout
result=StringIO()
sys.stdout=result
(我这里的所有代码都使用stdout)
然后为了得到我的最后一个字符串,我做了sys.stdout=old_stdout
打印(result.getvalue())
无需修改sys.stdout
,您只需分配result=StringIO()然后将传递到_file=result