python - 打印子流程输出时出现奇怪的缩进
问题描述
我正在使用此代码输出结果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...............(...)
解决方案
推荐阅读
- android - 在 Android Studio 中尝试 httpurlconnection 时,“不允许到 www.android.com 的明文 HTTP 流量”
- google-sheets - 使用 Google 表格的条件下的最大值
- php - 如何通过 laravel-livewire 为显示的数据设置动画?
- wordpress - 由于缺少密码而被 wordpress 锁定
- sql-server - 如何通过 SQL 代理作业从游标驱动的 SQL 存储过程中执行带有参数的 SSRS 报告
- javascript - 使用 SelectPicker 动态添加行
- linux - 如何从完整的 linux 文件系统备份创建可引导 ISO
- phaser-framework - 平铺精灵在 Phaser3 中不重复
- r - 用R中的连字符替换非ASCII破折号
- python - 使用 networkx 设置操作