在Python中执行系统命令的方法示例详解
前言
Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法。
本文将详细介绍关于Python中如何执行系统命令的相关资料,下面话不多说了,来一起看看详细的介绍吧。
(1)os.system()
这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。
>>>importos >>>output=os.system('cat/proc/cpuinfo') processor:0 vendor_id:AuthenticAMD cpufamily:21 ...... >>>output#doesn'tcaptureoutput 0
(2)os.popen()
这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。
>>>output=os.popen('cat/proc/cpuinfo') >>>output>>>printoutput.read() processor:0 vendor_id:AuthenticAMD cpufamily:21 ...... >>>
(3)commands模块
>>>importcommands >>>(status,output)=commands.getstatusoutput('cat/proc/cpuinfo') >>>printoutput processor:0 vendor_id:AuthenticAMD cpufamily:21 ...... >>>printstatus 0
注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。
注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。
(4)subprocess模块
该模块是一个功能强大的子进程管理模块,是替换os.system,os.spawn*等方法的一个模块。
>>>importsubprocess >>>subprocess.Popen(["ls","-l"])#python2.xdoesn'tcaptureoutput >>>subprocess.run(["ls","-l"])#python3.xdoesn'tcaptureoutput>>>total68 drwxrwxr-x3xlxl4096Feb805:00com drwxr-xr-x2xlxl4096Jan2102:58Desktop drwxr-xr-x2xlxl4096Jan2102:58Documents drwxr-xr-x2xlxl4096Jan2107:44Downloads ...... >>>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
补充:
最近在做那个测试框架的时候发现Python的另一个获得系统执行命令的返回值和输出的类。
最开始的时候用Python学会了os.system()这个方法是很多比如C,Perl相似的。
os.system('cat/proc/cpuinfo')
但是这样是无法获得到输出和返回值的,继续Google,之后学会了os.popen()。
output=os.popen('cat/proc/cpuinfo')
printoutput.read()
通过os.popen()返回的是fileread的对象,对其进行读取read()的操作可以看到执行的输出。但是怎么读取程序执行的返回值呢,当然咯继续请教伟大的Google(联想到像我这样的人工作如果离开了Google,不是成了废物。。。Baidu忽视)。Google给我指向了commands—Utilitiesforrunningcommands。
这样通过commands.getstatusoutput()一个方法就可以获得到返回值和输出,非常好用。
(status,output)=commands.getstatusoutput('cat/proc/cpuinfo')
printstatus,output
PythonDocument中给的一个例子,很清楚的给出了各方法的返回。
>>>importcommands
>>>commands.getstatusoutput('ls/bin/ls')
(0,'/bin/ls')
>>>commands.getstatusoutput('cat/bin/junk')
(256,'cat:/bin/junk:Nosuchfileordirectory')
>>>commands.getstatusoutput('/bin/junk')
(256,'sh:/bin/junk:notfound')
>>>commands.getoutput('ls/bin/ls')
'/bin/ls'
>>>commands.getstatus('/bin/ls')
'-rwxr-xr-x1root13352Oct141994/bin/ls'
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。