我正在使用Python子进程执行如下所示的命令:
process = subprocess.Popen(['debug', 'file.tgz'],
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
while True:
output = process.stdout.readline()
print(str(output.strip()).encode())
return_code = process.poll()
if return_code is not None:
break
我得到的结果如下所示:
b"b'Registers:'"
这正是我所期待的。
Registers:
我正在使用编码,但仍然看到相同的输出。如果我在命令行上运行相同的进程,我会得到相同的输出。
如何删除这些特殊字符?
- 跳过str((;这将消除内部
b'...'
- 您想要.decode而不是.encode,因为您想要将字节流(来自子进程(转换为字符串(用于打印(。您需要知道它使用的是哪种编码,以及(如果适用(如何处理格式错误的数据
- (可选(在解码后而不是解码前去除空白,也可以去除非ASCII空白字符(如果有的话(
print(output.decode('utf8', errors='strict').strip())