Fork me on GitHub

python中执行shell命令的几个方法

1.os.system()

a=os.system("df -hT | awk 'NR==3{print $(NF-1)}'")

该命令会在页面上打印输出结果,但变量不会保留结果,只会保留返回的状态码.

2.os.popen()

os.popen()返回的是 file read 的对象,但没有状态码,不过影响不大.
a=os.popen("df -hT | awk 'NR==3{print $(NF-1)}'").read()
返回的是字符串;
a=os.popen("df -hT | awk 'NR==3{print $(NF-1)}'").readlines()
返回的是列表.

3.commands适用于Python2

>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')

4.subprocess适用于Python3

a=subprocess.getstatusoutput("df -hT | awk 'NR==3{print $(NF-1)}'")
返回的是一个元组(状态码,执行结果)-(0, '17%')
a=subprocess.getoutput("cmd")
直接返回执行结果,subprocess没有getstatus对象

5.用到时再研究

call--执行命令,返回状态码(命令正常执行返回0,报错则返回1);
check_call--执行命令,如果执行成功则返回状态码0,否则抛异常;
check_output--执行命令,如果执行成功则返回执行结果,否则抛异常;
Popen--用于执行复杂的系统命令,等用到再研究.

 

参考博客:https://blog.csdn.net/jasonlee_lijiaqi/article/details/80466997

posted @ 2018-11-26 15:51  法外狂徒  阅读(2304)  评论(0编辑  收藏  举报