gpt4 book ai didi

python - 如何在执行 subprocess.Popen 时保留外壳上输出的原始颜色编码?

转载 作者:行者123 更新时间:2023-12-04 14:57:10 25 4
gpt4 key购买 nike

我有一个简单的 Python 脚本,它实时打印命令的输出。以下是脚本:

#!/usr/bin/env python3
import subprocess

def RunSubProcess(process, process_args):
process = subprocess.Popen([process, process_args],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
while process.stdout.readable():
line = process.stdout.readline()
if not line:
break
print(line.strip())

RunSubProcess('ls', '-la')
该脚本可以很好地完成它应该做的事情,但它在我的 shell 上丢失了输出的颜色编码。如果我输入 ls -la ,我得到的输出颜色很好。但是如果我运行上面的 Python 脚本,它会给出输出 联合国 有色。
subprocess.Popen 有争论吗?可以保留它运行的 shell 的颜色编码吗?
PS:
我在安装了 Python 3.9.0 的 MacOS 上的 bash shell 上运行这个 Python 脚本。

最佳答案

许多程序会检测自己是否连接到终端,并切换到不同的行为进行交互使用。
有些提供了强制交互功能的选项(尝试 ls --color=always 但究竟什么有效取决于您的平台;这不是标准化行为。macOS ls man page 说在环境中设置 CLICOLOR=yes)而其他人可能会被愚弄相信他们是使用 pty 交互运行图书馆,或 pexpect这是一个更高级别的包,更容易使用。

关于python - 如何在执行 subprocess.Popen 时保留外壳上输出的原始颜色编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67710641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com