Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以自动将bzr函数(log.show_log)输出作为脚本返回,这样我就可以重新搜索它?_Python_Bazaar - Fatal编程技术网

Python 有没有一种方法可以自动将bzr函数(log.show_log)输出作为脚本返回,这样我就可以重新搜索它?

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

一般来说,bzrlib中可能有一个更好的模块来实现这一点,但我一直没有找到它。我希望能够返回bzrlib函数的输出:
log.show_log()
作为脚本,这样我就可以使用python
re.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