Python 从Git命令捕获输出时如何保留颜色?

Python 从Git命令捕获输出时如何保留颜色?,python,git,terminal,subprocess,Python,Git,Terminal,Subprocess,我有一个用Python实现的自定义Git命令,它使用模块中的方法调用Git。我注意到,根据使用的方法,输出可能是彩色的,也可能不是彩色的,例如: import subprocess subprocess.run('git push origin --delete foobar', shell=True) print() print(subprocess.run('git push origin --delete foobar', shell=True,

我有一个用Python实现的自定义Git命令,它使用模块中的方法调用
Git
。我注意到,根据使用的方法,输出可能是彩色的,也可能不是彩色的,例如:

import subprocess

subprocess.run('git push origin --delete foobar', shell=True)
print()
print(subprocess.run('git push origin --delete foobar', shell=True,
                     capture_output=True, encoding='utf-8').stderr, end='')
输出:


如何在捕获的输出(stdout和stderr)中保留颜色?

许多命令检测它们是否没有将输出发送到“终端”,如果没有,则不添加特定于终端的代码以显示颜色。当你缺少颜色时,情况就是这样。一些Git命令,不确定所有的,都可以使用<代码> -颜色< /代码>参数-检查MangPox.< /P>这不回答您的问题,但是考虑使用而不是<代码>子进程< /代码>。它应该提供比建立字符串更好的界面,以及更好的性能和跨平台支持,而不需要用户的
$PATH
上的
git
。可能的
push
复制不会占用
--color
,这就是问题所在。我需要一些通用的方法来为所有命令启用颜色,无论输出是否发送到终端。。。试着问这个问题看看是否有用:是的,使用
script
unbuffer
绝对是一种选择。我希望Git中到处都有一个环境变量启用颜色,这将是理想的。