我是Python的新手,我到处寻找如何处理子进程的STDOUT的例子,但运气不好。你知道吗
我有一个测试命令行可执行文件,它不断地产生输出,并试图实时读取标准输出并将其打印到屏幕上。最终它会在本地处理数据,然后将摘要发送到另一台机器上,但我已经简化了这个问题。你知道吗
我已经尝试使用Python来实现这一点,如下代码所示:
import subprocess, time, os, sys
cmd = [sys.executable, 'TestStdOut.exe']
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, b''):
print(">>> " + line)
我使用的测试可执行文件目前只输出dateTime,stdout如下所示:
....
16/11/2015 10:52:44
16/11/2015 10:52:44
16/11/2015 10:52:44
16/11/2015 10:52:44
16/11/2015 10:52:44
16/11/2015 10:52:45
....
但我得到了这个错误,我无法找出原因:
Traceback (most recent call last):
File "test_stdout.py", line 9, in <module>
print(">>> " + line)
TypeError: Can't convert 'bytes' object to str implicitly
我希望Python只显示相同的行,就像我从命令行运行可执行文件一样。我在谷歌上搜索了这个错误,但似乎找不到答案。你知道吗
我错过了什么?你知道吗
非常感谢
皮特
更新:感谢2RING,我回去查看了我的笔记,这段代码现在可以工作了:
import subprocess, time, os, sys
cmd = ['TestStdOut.exe']
p = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while True:
line = p.stdout.readline()
if line != '':
print(line.rstrip().decode('utf-8'))
else:
break
目前没有回答
相关问题 更多 >
编程相关推荐