Python2 的subprocess.Popen代码在 Python3出错
Python2的代码:
p=subprocess.Popen([app,adds],stdin=subprocess.PIPE,stdout=subprocess.PIPE)
p.stdin.write(param)
results = pipe.stdout.readline().strip()
实现的效果是当执行p.stdin.write(param时),相当我执行:
app adds param,
app 指向一个独立的第三方程序,adds是这个第三方程序带的第一个参数,
param 是第三方程序带的第二个参数。
python2执行正常,results返回结果0.
Python3 我理解默认默认类型改成了bytes,所以对应改成如下代码:
p=subprocess.Popen([app,adds],stdin=subprocess.PIPE,stdout=subprocess.PIPE,text=True)
p.stdin.write(param)
results = pipe.stdout.readline().strip()
python3 就是无法得到结果,首先到 p.stdin.write(param),
并没有实现执行
app adds param的效果。应该是直接报错了。
然后到results就自动结束了,
请大家帮忙看看。
@PFinal南丞 Try 也抓不到错误。 找到问题点了, 3.8加上 bufsize=0 就正常了。