git diff --color =永不转义输出中的序列

时间:2015-10-02 11:10:39

标签: python git

我试图在python脚本中使用git diff --color=never,但我意识到git diff的输出中存在转义序列,尽管使用了--color=never选项。

这是输出的一个例子:

[u'\x1b[?1h\x1b=\r\x1b[1mdiff --git a/file1 b/file1\x1b[m\x1b[m\r', u'\x1b[1mnew file mode 100644\x1b[m\x1b[m\r', u'\x1b[1mindex 0000000..e69de29\x1b[m\x1b[m\r', u'\x1b[1mdiff --git a/file2 b/file2\x1b[m\x1b[m\r', u'\x1b[1mdeleted file mode 100644\x1b[m\x1b[m\r', u'\x1b[1mindex e69de29..0000000\x1b[m\x1b[m\r', u'\r\x1b[K\x1b[?1l\x1b>']

要重现,您可以使用此代码段(或类似内容):

from sh import git


def main():
    changes = git.diff('--color=never', 'master', 'origin/master')
    changes = changes.split('\n')
    print(changes)


if __name__ == '__main__':
    main()

我有两个问题:

有没有办法避免打印这些序列(例如git选项)?

为什么这些序列在那里以及它们做了​​什么,因为当我从命令行调用它时我看不到任何颜色。

0 个答案:

没有答案