当前位置: 首页 > 后端技术 > Python

python调用外部命令的四种方式

时间:2023-03-25 22:27:55 Python

Python提供了几种调用shell的命令,但是每一种命令都有不同的作用,需要详细了解才能更方便的满足不同的需求。os.systemos.system(cmd)的返回值。如果执行成功,则返回0,表示命令执行成功。否则就是执行错误。usingos.system的返回值是脚本的退出状态码。该方法调用shell脚本后返回一个16位的二进制数。低位是杀死被调用脚本的信号号,高位是脚本的退出状态码。示例:importosresult=os.system('cat/etc/passwd')print(result)#os.popenos.popen()方法不仅执行命令,而且执行后返回信息对象(常用于获取returnafterexecutingthecommandinformation),就是通过管道文件返回结果。os.popen()返回的对象是文件读取的对象,用read()读取可以看到执行的输出。示例:importosresult=os.popen('cat/etc/passwd')print(result.read())commandscommands模块是一个可执行的shell命令库,是python的内置模块示例:importcommandsstatus=commands.getstatus('cat/etc/passwd')print(status)output=commands.getoutput('cat/etc/passwd')print(output)(status,output)=commands.getstatusoutput('cat/etc/passwd')print(status,output)subprocess子进程是一个强大的子进程管理模块。当命令或返回的参数包含汉字时,推荐使用subprocess。subprocess.Popen()的参数使用subprocess.call()进行解释。subporcess模块??还有一个call()方法,可以更简单的调用外部命令。subprocess.call(*popenargs,**kwargs)call的用法和Popen基本一致,没有太大区别。这里我们再介绍一种使用方法。示例:importsubprocessres=subprocess.Popen('cat/etc/passwd',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)#使用管道#printres.stdout.read()#line的标准输出inres.stdout.readlines():printlineres.stdout.close()#Close总结:综上所述,除了os.system,其他命令方法执行后都能获取到返回结果。os.system()用于简单地执行命令并显示执行结果。os.popen()用于简单的执行命令,不能显示执行结果,可以通过变量返回执行结果。subprocess.Popen()用于执行复杂命令,显示执行结果,设置输出内容。subprocess.call()用于执行复杂命令,显示执行结果,设置输出内容。