我有一个简单的 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:
我正在MacOS上的bash shell上运行这个Python脚本,使用的是Python 3.9.0。
ls
,但我猜您是将其用作示例。 - tripleeels
只是一个示例,用来说明我的问题。 - TheWaterProgrammerstderr
的输出仅以红色进行着色?这是可能的。我应该尝试在那个print
调用中做一些技巧。 - TheWaterProgrammersubprocess
调用中捕获它。 - tripleee