•  

Python调用外部命令

发表于 2020-06-03,阅读 7

介绍

介绍

我们使用 python 替代 shell 是因为 python 更强大,但是shell就是linux,shell调用系统命令直接就可以

那么 python 如果调用系统命令呢?

教程

使用 os 模块

获取标准输出

标准输出stdout通过readlines()方法得到数组

import os

fd = os.popen('ls')
print (fd.readlines())
fd.close()

获取结果码

标准输出stdout会直接打印出来,返回结果码

import os

retcode = os.system('ls')
print (retcode)

使用 subprocess 模块

直接运行

运行命令,打印标准输出stdout

import subprocess

p = subprocess.Popen(args='ls -lh',shell=True,cwd='/root')
p.wait()

输出放入PIPE

运行命令,将标准输出stdout放入PIPE

import subprocess

p = subprocess.Popen(args='ls -lh',stdout=subprocess.PIPE,shell=True,cwd='/root')
p.wait()
print (p.stdout.read())

获取结果码

运行命令,打印标准输出stdout,返回结果码

import subprocess

retcode = subprocess.call('ls -lh /root/',shell=True)
print (retcode)

获取结果码(带检测)

如果执行失败,会触发 CalledProcessError 异常

import subprocess

retcode = subprocess.check_call('ls -lh /root/sfc',shell=True)
print (retcode)

获取标准输出(带检测)

如果执行失败,会触发 CalledProcessError 异常

import subprocess

output = subprocess.check_output('ls -lh /root/sfc',shell=True)
print (output)

总结

  • subprocess 模块功能更强大,推荐使用

  • 如果简单调用,不考虑执行失败的情况的话,可以考虑使用 os 模块

鬼谷子叔叔
  • 日志:212
  • 回复:13

进入ta的主页