您当前的位置: 首页 >  彭世瑜 Python

Python编程:subprocess执行命令行命令

彭世瑜 发布时间:2019-01-12 17:28:40 ,浏览量:2

函数说明os.system(command)返回状态码,执行结果输出到屏幕os.popen(command).read()返回执行结果,没有状态码--subprocess.run()Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例subprocess.call()执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)subprocess.check_call()Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(…, check=True)subprocess.check_output()Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常subprocess.getoutput(cmd)接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)subprocess.getstatusoutput(cmd)执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出) 代码示例

import subprocess
import os

cmd = "pwd"

# 返回命令执行状态码,而将命令执行结果输出到屏幕
ret = os.system(cmd)
print("system ret:", ret)
"""
/Users/myproject/mydemo/demo
system ret: 0
"""

# 可以获取命令执行结果,但是无法获取命令执行状态码
ret = os.popen(cmd)
print("popen ret: ", ret.read())
"""
popen ret:  /Users/myproject/mydemo/demo
"""

ret = subprocess.run(cmd)
print("run ret: ", ret.returncode)
# run ret:  0

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
p.wait()
print("Popen ret: ", p.stdout.read())
"""
Popen ret:  b'/Users/myproject/mydemo/demo\n'
"""

exitcode, output = subprocess.getstatusoutput(cmd)
print("exitcode: ", exitcode)
print("output: ", output)
"""
exitcode:  0
output:  /Users/myproject/mydemo/demo
"""

汇成一个函数


import subprocess

class CommandException(Exception):
    pass


def run_cmd(command):
    exitcode, output = subprocess.getstatusoutput(command)
    if exitcode != 0:
        raise CommandException(output)

    return output


if __name__ == '__main__':
    cmd = "pwd"
    print("output: ", run_cmd(cmd))
    # output:  /Users/myproject/mydemo/demo

参考 Python之系统交互(subprocess)

关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 2浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0869s