我试图在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选项)?
为什么这些序列在那里以及它们做了什么,因为当我从命令行调用它时我看不到任何颜色。