Python version 3.5.2
所以我有一个来自mitmproxy
的文件输出,名为enter code here
,我想用以下方法读取它:
from shelljob import proc
g = proc.Group()
command = "tail -f -c +0 output_file | mitmdump -n -r - --set flow_detail=1 --showhost"
p = g.run (command)
def read_process():
while g.is_pending():
lines = g.readlines()
for proc, line in lines:
print ("data:" + str(line) + '\n\n')
然后回来
^{pr2}$但如果我将命令改为ping 127.0.0.1
,比如:
from shelljob import proc
g = proc.Group()
command = "ping 127.0.0.1"
p = g.run (command)
def read_process():
while g.is_pending():
lines = g.readlines()
for proc, line in lines:
print ("data:" + str(line) + '\n\n')
而且效果很好!。返回:
data:b'64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.056 ms\n'
那么解决办法是什么呢?在
我很确定您的命令没有像您在调用
g.run
时所预期的那样被管道传输,mitmdump
之后的参数-n -r
正在以某种方式传递给tail
,因此运行以下命令:生成您看到的错误消息。在
现在您告诉我们} 的
^{pr2}$g.run
实际上是什么,查看函数的documentation,我们可以看到它有一个传递给^{shell
参数,该参数用于启用shell命令的处理。要解决此问题,您可以尝试以下方法:数据以字节为单位返回,如输出前面的
b
所示。 你必须把它解码成一个字符串。在print ("data:" + line.decode('utf-8') + '\n\n')
相关问题 更多 >
编程相关推荐