【发布时间】:2016-04-10 01:10:38
【问题描述】:
我正在使用 popen 制作插件,该插件使用了一个外部程序,该程序在输出中显示了一些彩色文本。
输出是这样的:
avr-g++ -o .pioenvs\uno\FrameworkArduino\HardwareSerial.o -c -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10607 -I.pioenvs\uno\FrameworkArduino -I.pioenvs\uno\FrameworkArduinoVariant .pioenvs\uno\FrameworkArduino\HardwareSerial.cpp
avr-g++ -o .pioenvs\uno\FrameworkArduino\HardwareSerial0.o -c -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO_ARCH_AVR -DARDUINO_AVR_UNO -DARDUINO=10607 -I.pioenvs\uno\FrameworkArduino -I.pioenvs\uno\FrameworkArduinoVariant .pioenvs\uno\FrameworkArduino\HardwareSerial0.cpp
=============================================
Path\file.cpp: in function 'void loop()':
Path\file.cpp:23:2 error: expected ';' before '}' token
}
^
=============================================
“=”内的所有内容都是红色和黄色的。
当我在命令控制台中运行命令时,我可以看到完整的输出,但是当我使用 Popen 时,我只能得到未着色的文本
这就是我使用 Popen 的方式
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, cwd=self.cwd, universal_newlines=True, shell=True)
output = process.communicate()
stdout = output[0]
stderr = output[1]
print(stdout)
print(stderr)
我想获取文本,即使它没有着色,重要的是获取完整的日志。
任何建议将不胜感激
【问题讨论】:
-
如果我的答案有助于解决您的问题,请投票。 :)
-
完成!再次感谢:)
标签: python python-2.7 output popen