python中调用shell命令

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值