1.os.system(cmd)
import os
## os.system()调用shell命令
var = os.system('df -h')
>>> var = os.system('df -h')
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 13G 8.8G 3.9G 70% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 44M 877M 5% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 184M 0 184M 0% /run/user/0
2.使用commands模块
- commands.getstatusoutput(cmd):以字符串的形式返回输出结果和转态码,(status,output)
- commands.getoutput(cmd):返回cmd的输出结果
>>> import commands
>>> (status,output) = commands.getstatusoutput("ls -a")
>>> print(status)
0
>>> print(output)
.
..
aa.txt
bb.txt
3.使用subprocess模块
1)功能说明
- 允许创建很多子进程,创建的时候能指定进程和子进程的输入、输出、错误输出管道,执行后能获取输出结果和执行转态
- subprocess.run():等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例,适用于3.5及以上版本
- subprocess.call():执行指定的命令,返回命令执行状态,功能类似os.system(cmd)
- subprocess.check_call():执行指定的命令,如果执行成功返回状态码,否则抛出异常
2)函数使用语法
- subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)
- subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
- subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
参数说明
- args:shell执行的命令
- check:是否异常检查,如果为True则执行命令的进程一非0状态退出,则会抛出一个CalledProcessError的异常信息
- shell:若为Ture,执行指定的shell命令
- stdout,stderr,input:该参数是传递给Popen.communicate(),通常改参数的值必须是一个字节序列,如果universal_newlines为True,则其值应该是一个字符串。
>>> import subprocess
>>> subprocess.run("ipconfig",shell=True)
...
...
CompletedProcess(args='ipconfig', returncode=0)
>>> import subprocess
>>> subprocess.call("ls -a",shell=True)
. .. aa.txt bb.txt # shell输出结果
0 # status
参考文档:https://www.cnblogs.com/pengpp/p/9833349.html