调用外部程序

Posted wenshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用外部程序相关的知识,希望对你有一定的参考价值。

‘‘‘
1. os.system() 阻塞式调用

import os
os.system("mspaint")
print("after call")

ret=os.system("dir sdfdsf") 返回的是退出码
print(ret)
‘‘‘
‘‘‘
2. subprocess 阻塞式调用
目的:
1. 获取应用程序的输出
通常使用check_output,
from subprocess import check_output
ret = check_output("dir",shell=True,encoding="gbk") 获取了应用程序的输出值,也是阻塞式的,需要等待程序完成才能退吹
shell 使用shell打开
encoding: 确定编码方案和解码方案
‘‘‘
‘‘‘
3. subprocess中的Popen. 非阻塞式调用
from subprocess import Popen,PIPE
ret= Popen(args=,stdin=,stdout=,stderr=,shell=True,encoding="gbk")
运行时的时候也可以进行输出
shell=True 的时候,用shell去运行,args是一个字符串的传参,比较常用.
shell=False 的时候,用shell去运行,args是一个列表的传参

popen获取外部程序的输出
from subprocess import Popen,PIPE
res= Popen(args="dir",stdout=PIPE,stderr=PIPE,shell=True,encoding="gbk") PIPE是获取输出的内容,不让其输出在屏幕上,而是转到管道中.
output,error = res.communicate() 返回程序输出的内容.(output:标准输出,error: 标准错误,默认标准输出/错误是打印在屏幕上,通过PIPE现在是可以定向到变量中去)

‘‘‘
from subprocess import Popen,PIPE
rt= Popen(args="dir sadas",stdout=PIPE,stderr=PIPE,shell=True,encoding="gbk")
output,error = rt.communicate()

print("output:",output)
print("----------------------")
print("error:",error)

以上是关于调用外部程序的主要内容,如果未能解决你的问题,请参考以下文章

Python调用外部程序问题?

C#winform 关于调用外部程序的问题

易语言,如何在程序内部调用外部的exe文件,让外部的exe文件运行在易语言程序内。

调用外部dll,外部程序捕获不了异常问题

C语言中,怎样调用外部exe程序,等外部程序执行完之后在执行本程序的下一条语句

有关C#winform的调用外部程序的问题