Python Unicode和\xe2\x80\x98r\xe2\x80\x99

2024-07-01 07:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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'

那么解决办法是什么呢?在


Tags: runfromimportreaddataisdefline
2条回答

我很确定您的命令没有像您在调用g.run时所预期的那样被管道传输,mitmdump之后的参数-n -r正在以某种方式传递给tail,因此运行以下命令:

$ tail -n -r
tail: invalid number of lines: ‘r’

生成您看到的错误消息。在

现在您告诉我们g.run实际上是什么,查看函数的documentation,我们可以看到它有一个传递给^{}shell参数,该参数用于启用shell命令的处理。要解决此问题,您可以尝试以下方法:

^{pr2}$

数据以字节为单位返回,如输出前面的b所示。 你必须把它解码成一个字符串。在

print ("data:" + line.decode('utf-8') + '\n\n')

相关问题 更多 >

    热门问题