我正在尝试将gnuplot的包装器从python2移植到python3.大多数错误很容易解决,但与项目的通信似乎异常.我在以下(丑陋的)片段中隔离了该问题.
cmd = ['gnuplot']
p = subprocess.Popen(cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
p.stdin.write("set terminal dumb 80 40
")
p.stdin.write("plot '-' w p ls 1, '-' w p ls 2, '-' w p ls 3
")
p.stdin.write("1 2 3
")
p.stdin.write("2 3 4
")
p.stdin.write("
e
")
p.stdin.write("e
")
p.stdin.write("e
")
while True:
print(p.stdout.read(1),end="")
此代码可以在python2中工作并产生并打印结果,但在python3中失败.首先,它抱怨字节和字符串,因此我添加了Universal_newlines = True.从那里我不明白为什么它在stdout上什么也不输出,并在stderr中打印出来:
?????????第4行:警告:跳过没有有效点的数据文件
?????????第5行:警告:跳过没有有效点的数据文件
显然,问题出在编码或通信中,因为我发出的命令是相同的,但我不知道在哪里查找或如何调试.
任何建议都欢迎.