当前位置:   article > 正文

python执行Linux命令的几种方法

python执行linux命令

1. os.system(cmd)

返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256/512表示未找到,该方法适用于shell命令不需要输出内容的场景

os.system(cmd)会启动子进程,在子进程中执行cmd,如果cmd有执行内容,会在标准输出显示。

>>> import os
>>> val = os.system('pwd')
/home/stephen
>>> print val
0
>>> val = os.system('ls record.txt')
ls: cannot access record.txt: No such file or directory
>>> print val
512

2. os.popen() 

该方法以文件的形式返回shell指令运行后的结果需要获取内容时可使用read()或readlines()方法。

os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。

>>> os.popen('pwd')
<open file 'pwd', mode 'r' at 0xb7751e90>
>>> os.popen('pwd').read()
'/home/stephen\n' 

3. commands模块 

(1)commands.getstatusoutput(cmd),其以元组(status,output)的形式返回命令执行后的返回状态和执行结果。其中,对cmd的执行实际上是按照{cmd;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息,output中不包含尾部的换行符。

>>> import commands
>>> status, result = commands.getstatusoutput('pwd')
>>> print status
0
>>> print result
/home/stephen

(2)commands.getoutput(cmd),返回cmd的输出结果。

>>> result = commands.getoutput('pwd')              
>>> print result
/home/stephen

(3)commands.getstatus(file),返回ls -l file的执行结果字符串,调用了getoutput,不建议使用此方法

>>> status = commands.getstatus('package')
>>> print status
drwxr-xr-x. 5 root root 4096 Nov 27 10:42 package  

4. subprocess模块

 

python3 中变化:

1)使用os.system(cmd) 无法获取输出内容

2)使用os.popen(cmd).read()可以获取到返回的json体${aa},通过json.loads(${aa})可以将json体转为字典样式

3)commands模块在Python3.0中被废弃了

4)subprocess.getstatusoutput(cmd)输出结果类似于python2中的commands.getstatusoutput(cmd),返回一个元组,元组的第2个值是执行结果${aa},通过json.loads(${aa})可以将json体转为字典样式。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/72333
推荐阅读
相关标签
  

闽ICP备14008679号