转载自品略图书馆 http://www.pinlue/article/2020/03/1106/1510011426025.html
说明:
1. 用communicate方法进行交互,直接读取p.stdout有可能数据还没刷新,会读取不到
2. windows shell参数表明是否使用windows bat作为执行的环境,因此只有在执行windows系统命令如dir,copy时才必须将此参数设置为True,其他地方True与False执行结果没区别
3. universal_newlines参数表明输入、输出是否采用文本解析
4. comnunicate的input参数是用于手式输入参数的,如果是命令行参数参数直接在程序后面加就可以
5. 没有了
import subprocess
proc = subprocess.Popen("E:\\__Projects\\c++\\test\\Debug\\test.exe", stdin = subprocess.PIPE,
stdout = subprocess.PIPE, stderr = subprocess.PIPE,universal_newlines=True, shell = False)
straa = "3\n"
strbb = "4\n"
proc.stdin.write(straa)
proc.stdin.write(strbb)
# p.stdin.close()
try:
outs, errs = procmunicate(timeout=15)
# print(proc.stdout.read())
print(outs)
except TimeoutExpired as e:
proc.kill()
outs, errs = procmunicate()
转载自品略图书馆 http://www.pinlue/article/2020/03/1106/1510011426025.html
说明:
1. 用communicate方法进行交互,直接读取p.stdout有可能数据还没刷新,会读取不到
2. windows shell参数表明是否使用windows bat作为执行的环境,因此只有在执行windows系统命令如dir,copy时才必须将此参数设置为True,其他地方True与False执行结果没区别
3. universal_newlines参数表明输入、输出是否采用文本解析
4. comnunicate的input参数是用于手式输入参数的,如果是命令行参数参数直接在程序后面加就可以
5. 没有了
import subprocess
proc = subprocess.Popen("E:\\__Projects\\c++\\test\\Debug\\test.exe", stdin = subprocess.PIPE,
stdout = subprocess.PIPE, stderr = subprocess.PIPE,universal_newlines=True, shell = False)
straa = "3\n"
strbb = "4\n"
proc.stdin.write(straa)
proc.stdin.write(strbb)
# p.stdin.close()
try:
outs, errs = procmunicate(timeout=15)
# print(proc.stdout.read())
print(outs)
except TimeoutExpired as e:
proc.kill()
outs, errs = procmunicate()