python3与子进程通讯,怎么传输值

vs9841 2013-10-17 04:41:04
正在学习python语言遇到了搞不懂的问题,求大神们帮助,看看哪里出了问题:
我希望用python给test2.exe实现输入,输出控制,向test2.exe传输两个值3和4,并返回它处理的结果,但是运行下面的python语言时,发生了错误:


app.py:
import subprocess

p = subprocess.Popen("test2.exe", stdin = subprocess.PIPE,stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = False)
p.stdin.write("3\n")
p.stdin.write("4\n")
print(p.stdout.read())


下面是test2.exe是用C++语言编写的:
#include <iostream>
using namespace std;

int main(int argc, const char *artv[])
{
int x, y;
cout << "input x:"<< endl;
cin >> x;
cout << "input y:"<< endl;
cin >> y;
cout << x << " + " << y << " = " << x + y << endl;

return 0;
}
...全文
173 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vs9841 2013-10-17
  • 打赏
  • 举报
回复
OK 明白了,再次感谢您。
angel_su 2013-10-17
  • 打赏
  • 举报
回复
5和3是看不到的,不是吗,一般不重要,你也知道是啥,非要再print出来就自己代码里加工一下
vs9841 2013-10-17
  • 打赏
  • 举报
回复

没有看到输入的值。5和3,只是在最后看到了输出的结果5+3=8
angel_su 2013-10-17
  • 打赏
  • 举报
回复
三楼那里回答有点乱,意思是: Popen(..., universal_newlines=True) p.stdin.write("3\n") p.stdin.write("4\n") #p.stdin.flush() Popen(..., universal_newlines=False) p.stdin.write(b"3\n") p.stdin.write(b"4\n") #p.stdin.flush() 没打参数universal_newlines默认是False
angel_su 2013-10-17
  • 打赏
  • 举报
回复
卡住的话输入后面,加一行代码刷缓冲试试: p.stdin.flush() 一般确定要输什么,用p.communicate(input="3\n4\n")方便点...
vs9841 2013-10-17
  • 打赏
  • 举报
回复
angel_su,用您说的Popen(..., universal_newlines=True)方法,现在能看到期望的结果了。。。。非常激动。
vs9841 2013-10-17
  • 打赏
  • 举报
回复
angel_su,非常感谢你的热心帮助,它现在卡住了,没有报错。。。
angel_su 2013-10-17
  • 打赏
  • 举报
回复
没效果是啥意思,程序无声无息跑完了,还是卡住,还是报错?
vs9841 2013-10-17
  • 打赏
  • 举报
回复
没有效果。。。
angel_su 2013-10-17
  • 打赏
  • 举报
回复
认真看报错信息,说不能用str,你改用bytes试试,或者用str的话Popen(..., universal_newlines=True) p.stdin.write(b"3\n") p.stdin.write(b"4\n")
vs9841 2013-10-17
  • 打赏
  • 举报
回复
snmr_com,非常感谢,我希望与test2.exe程序通讯。你说的这种传参数,不是我期望的那个样子。我希望python能实时的与它交互。
ImN1 2013-10-17
  • 打赏
  • 举报
回复
传参就简单了,你把第一个参数写成列表即可 就是"test2.exe" 写成 ["test2.exe", '3', '4']

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧