Python编程:subprocess执行命令行命令
  TEZNKK3IfmPf 2023年11月15日 29 0


函数

说明

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)​




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   32   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   25   0   0 python
  TEZNKK3IfmPf   2024年05月31日   34   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   25   0   0 python
TEZNKK3IfmPf