首页 > 解决方案 > 打印子流程输出时出现奇怪的缩进

问题描述

我正在使用此代码输出结果npm install

def run_command(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)    
    while True:
        output = process.stdout.readline()
        if process.poll() is not None:
            break
        if output:
            print (output.strip())

    rc = process.poll()
    return rc

但是我的输出有问题(ubuntu)

在此处输入图像描述

它以某种方式弄错了缩进。有人知道这里出了什么问题以及如何解决吗?

编辑(回答@hansolo 的问题)

当我使用print (repr(output.strip()))我得到这个代码:

b'\x1b[?25l[\x1b[90m..................\x1b[0m] | rollbackFailedOptional: \x1b[34;40mverb\x1b[0m \x1b[35mnpm-session\x1b[0m 54df17364582afa\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] | preinstall:rg_eat: \x1b[32minfo\x1b[0m \x1b[35mlifecycle\x1b[0m rg_eat@0.0.1~preinstal\x1b[0m\x1b[K\r[\x1b[7m \x1b[27m\x1b[90m.................\x1b[0m] / loadIdealTree:loadAllDepsIntoIdealTree: \x1b[7msill\x1b[0m \x1b[35minstall\x1b[0m loa\x1b[0m\x1b[K\r[\x1b[7m  \x1b[27m\x1b[90m...............(...)

标签: pythonpython-3.xsubprocess

解决方案


推荐阅读