python中得到shell命令输出的方法subprocess

以下使用的module都是系统自带的,无需额外安装。
 
python2.7 和 python3 都可以使用
1.
import subprocess

def execute_cmd(cmd):
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    output, err = p.communicate()
    # 判断命令是否执行成功
    status = 1 if err else 0
    if status == 0:
        print('[SUCCESS] %s' % cmd)
    else:
        print('[ERROR] %s' % cmd)
        print(err)
    return status, output
2.
import os

process = os.popen('ls -l') # return file
output = process.read()
process.close()

# 简单写
with os.popen('ls -l') as process:
    output = process.read()

python 2.7

import commands

return_code, output = commands.getstatusoutput('ls -l')

 python3

import subprocess

def execute_cmd(cmd)
    ''' status: 0: success, 1: error
       ret: success: stdout, error: stderr
    '''
    status, ret = subprocess.getstatusoutput(cmd)
    if status == 0:
        print('[SUCCESS] %s' % cmd)
    else:
        print('[ERROR] %s' % cmd)
        print(ret)
    return status, ret
 
 
原文地址:https://www.cnblogs.com/snow-backup/p/5035792.html