python popen执行系统命令并获取返回值。

转载自品略图书馆 http://www.pinlue.com/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 = proc.communicate(timeout=15)

# print(proc.stdout.read())

print(outs)

except TimeoutExpired as e:

proc.kill()

outs, errs = proc.communicate()

发布了60 篇原创文章 · 获赞 58 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/yihuliunian/article/details/105392503
今日推荐