Python repo popen无法在python脚本中工作,但在终端上工作

时间:2018-03-16 04:40:24

标签: python git

我有一个捕获repo命令的python脚本。

import subprocess

processing(commandforrepo)

def processing(repocmd):
    process = None
    process = subprocess.Popen(repocmd,
                          stdout=subprocess.PIPE, stderr=None, shell=True)
    process.communicate()

在特定命令中,我试图解析repocmd列表以比较两个分支并打印出差异

"repo forall $(repo forall -c 'echo $REPO_PROJECT')\
     -c 'git log --abbrev-commit --pretty=oneline --no-merges \
     --cherry-pick --left-only HEAD...$REPO_RREV'"

尝试在终端上运行脚本但命令没有执行。但是,当在终端上发出此命令时,它会生成两个分支之间的差异列表。

关于缺少什么的任何线索?

1 个答案:

答案 0 :(得分:0)

警告:Git命令的大多数标准输出都是在... stderr上完成的 请参阅here for why:信息性消息仅在stderr上。

所以一定要解析stderr,而不是stdout。